gpt4 book ai didi

image-processing - 应用边缘检测后如何去除一些边缘?

转载 作者:行者123 更新时间:2023-12-04 07:22:20 26 4
gpt4 key购买 nike

我需要找到虹膜边缘,我使用的输入图像不是完全圆形的虹膜,有时它可能被眼睑覆盖。
我找到了一篇期刊文章的摘要,发现虹膜甚至被眼睑覆盖。但是,我坚持了其中一个步骤。同样,因为只有摘要,我找不到那篇文章的全文。

这就是我卡住的地方,我有一个图像,它已经被垂直 Sobel 边缘检测暗示了。
我有一个图像输入,这是图片:

Input Image

这是应用垂直边缘检测后的图片:

enter image description here

我需要删除除虹膜边缘(红色边缘)之外的所有边缘。

enter image description here

我的预期结果应该是这样的:

enter image description here

Note : Some images might only have left or right edges of the pupil like the image above, but some images might have left and right edges for the pupil.



在我看来,有两种方法可以获得边缘。
  • 删除水平边缘,因为瞳孔边缘有点垂直。但我不知道如何去除水平边缘,它不是真正的水平线,而是弯曲的水平线。
  • 找出图中最长的边(我也不知道找到最长边的算法是什么)。

  • 哪一种是解决我的问题的正确方法?或者不是上面两个选项?

    如果你知道找到不完全圆形物体的方法,特别是虹膜,请告诉我,它使我的项目更容易。

    最佳答案

    这是一个特征检测问题,因此,我会使用 Hough Circle Transformation在 OpenCV 库中 ( tutorial )。从截图中可以看出,该方法在检测局部圆度方面非常稳健。

    enter image description here

    import cv2
    import cv2.cv as cv
    import numpy as np

    img = cv2.imread(r'C:\path\to\eye.jpg',0)
    img = cv2.medianBlur(img,5)
    cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

    circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,20,
    param1=150,param2=30,minRadius=20,maxRadius=100)

    circles = np.uint16(np.around(circles))
    for i in circles[0,:]:
    # draw the outer circle
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    # draw the center of the circle
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

    cv2.imshow('detected circles',cimg)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    关于image-processing - 应用边缘检测后如何去除一些边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632538/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com