2017-08-04 130 views
-1

我正在使用dblib来获取脸部的眼睛。以下是一些结果的例子。Opencv:我如何获得眼睛颜色

eye example eye example eye example eye example

我尝试了好几种方法来实现目标。例如,我试图根据这个project来检测眼睛的中心;从那以后,很容易发现瞳孔和虹膜,但是,我没有取得好的结果。我也尝试过使用Hough Circles,但在某些情况下结果非常糟糕。

我最好的选择是检测瞳孔,这是眼睛唯一的一部分,每只眼睛都有一个共同的颜色(黑色)。我想获得一些想法来做到这一点。

我的第一个想法是在x轴上设置一个区域(在20和60之间),然后在灰度级上使黑色像素(例如小于25)变为黑色,其余为白色。这将创建一个面具,可以使用Hough Circles模糊并检测瞳孔区域。最后,我可以为虹膜设置一个半径。

任何想法,将不胜感激。

谢谢。

+0

tesnorflow图像分类 –

+1

你只是试图将眼睛分为'蓝色'或'不是蓝色'?如果是这样,您可以查看整个图像的颜色直方图,并查找不出现在任何颜色的皮肤中的蓝色尖峰。您应该能够识别图像中是否存在蓝色色调,或者是否缺少蓝色。 – struthersneil

+0

你的问题是什么?你想分辨多少眼睛颜色?蓝色和棕色?绿色蓝色棕色?甚至是不同的棕色色调?我会与@struthersneil建议。裁剪这些图片的中心并对色调进行分类。棕色和蓝色的眼睛应该有很大的区别 – Piglet

回答

0

其实你的想法检测瞳孔的形状是好的,但你的照片不够好,直接做。一个简单的方法是预处理那些删除所有无用的数据。

我做了一些例子跟你原来的图片之一,你(在瘸子)显示

  • 转到灰度

  • 做一个高通滤波器,以消除所有的小色调变动(你有非常不同的颜色,所以应该加强边界非常好)

Link to example filtered pic

  • 适用于你的图像的阈除去残留的波动(可以通过分析你的灰度图像颜色直方图计算参考阈值)

Link to example thresholded pic

经过这三个步骤,你应该有足够的数据来运行你的形状检测。

+0

感谢您的回答。你使用的过滤器的价值是什么?我试图按照你的建议来应用它们,但我没有得到类似的结果。 – sosegon

+0

我正在使用Gimp过滤器,它比标准高通和门限有更多的参与,你可以编写代码,但它给你一个很好的操作方法。下面是有PARAMS我萃取: 对于高通: 规格化:0% 色调:0 Sauturation:100% 亮度:100% Gamma值:1 对比度:0% 均化:0% 对于阈值:我只是将对比度设置为100%(只剩下极端值) – hackela