Об обнаружении кругов радужной оболочки и зрачка с помощью крутого круга в 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% области исследования.

Другие вопросы по тегам