从图像中识别棕榈线的颜色 - 需要比Canny更多

时间:2014-04-03 22:50:06

标签: opencv image-recognition

我正在尝试识别手掌图像中的线条并提取颜色。到目前为止,我可以识别边缘,但这不是完整的掌纹本身 - 并且边缘可以在'掌纹线'的内部或外部。我想识别那些定义掌纹的暗像素。

到目前为止,我使用opencv和Canny边缘检测算法取得了最大的成功。我的代码(类似于他们的例子):

int lowThreshold;       // vary this using a slider
int ratio = 3;
int kernel_size = 3;
Mat cvSource;           // source image, BGR
Mat cvSourceGray;       // source, Gray space
Mat cvCanny;            // edge detection via Canny

cvtColor( cvSource, cvSourceGray, CV_BGR2GRAY );
blur( cvSourceGray, cvSourceGray, cv::Size(3,3) );  // Reduce noise with a kernel 3x3
Canny( cvSourceGray, cvCanny, lowThreshold, lowThreshold*ratio, kernel_size );    

我遇到的问题是,一旦我有Canny调整边缘检测,它会给我一个像素宽的边缘,即不是掌线,而是掌纹的边缘(检测) 。我没有在线的两侧获得边缘 - 只有一条并且该边缘不一定在掌线上 - 它可能在线外,因此颜色变化为掌纹的浅色或深色 - 就像你一样可以在下面的图像中看到 - 样本图像和两个Canny输出 - 显示不同的'lowThreshold'。

我已经使用了findContours - 这可以工作,但实质上是使用Canny输出,因此它不会在这个问题上添加任何内容。

我希望有人可以给我一些关于如何更好地检测手掌线的想法 - 其中手掌线被定义为线条区域内/线条区域内的实际像素,因此我可以抓住颜色。

谢谢!

Palm image http://www.radioshowlinks.com/f/pics/B2.png Canny output 1 http://www.radioshowlinks.com/f/pics/Canny-B2-9.png Canny output 2 http://www.radioshowlinks.com/f/pics/Canny-B2-23.png

0 个答案:

没有答案