Об обнаружении кругов радужной оболочки и зрачка с помощью крутого круга в java opencv
Я использую OpenCV в Java, чтобы попытаться обнаружить круги (радужная оболочка и зрачок) в изображении глаза. Но я не получил результат, как это должно быть.
Вот мой код
` // convert source image to gray
org.opencv.imgproc.Imgproc.cvtColor(mRgba, imgCny, Imgproc.COLOR_BGR2GRAY);
//fliter
org.opencv.imgproc.Imgproc.blur(imgCny,imgCny,new Size(3,3));
//apply canny
org.opencv.imgproc.Imgproc.Canny(imgCny, imgCny, 10, 30);
//apply Hough circle
Mat circles = new Mat();
Point pt;
org.opencv.imgproc.Imgproc.HoughCircles(imgCny,circles, Imgproc.CV_HOUGH_GRADIENT,imgCny.rows()/4,2,200,100,0,0);
//draw the found circles
for (int i=0; i < circles.cols();i++){
double vCircle[] = circles.get(0,i);
pt = new Point((int) Math.round((vCircle[0])),(int) `enter code here`Math.round((vCircle[1])));
int radius = (int) Math.round(vCircle[2] );
Core.circle(mRgba, pt, radius, new Scalar(0,0,255),3);
`
the original image
canny result
Я не знаю, что если проблема в параметрах функции крутого круга или чего-то еще
Кто-нибудь сталкивался с такой проблемой или знает как ее исправить??
1 ответ
Нет никакого способа, которым преобразование Хафа обнаружит желаемую окружность в этом хитром результате! Слишком много краев. Вы должны очистить изображение в первую очередь.
Начните с черного (зрачок, внутренняя часть радужки) и обнаружения белого. Эти две зоны будут ограничивать рентабельность инвестиций.
Кроме того, я также попытался бы выполнить определение кожи (простой порог в цветовом пространстве HSV. Это устранит 90% области исследования.