Я пытаюсь обнаружить диск и чашку в задней части глаза (дно), чтобы вычислить некоторые вещи позже. Так вот изображение глаза:Обнаружение кругов в изображении с использованием лапласиана
Я просто пытаюсь обнаружить диск, или больше желтоватым круг на правой стороне изображения, и чашу, или меньше желтый круг внутри этого первого круга, используя OpenCV и python, поэтому я могу в конечном итоге выполнить определенные вычисления.
До сих пор я пытался использовать фильтрацию лапласа, чтобы сделать круг более заметным.
Вот мой код:
import cv2
import numpy as np
from matplotlib import pyplot as plt
from pylab import *
# loading image
img0 = cv2.imread('01_g.jpg',)
# converting to gray scale
gray = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)
# remove noise
img = cv2.GaussianBlur(gray,(3,3),0)
# convolute with proper kernels
laplacian = cv2.Laplacian(img,cv2.CV_64F)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5) # x
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5) # y
magnitude = sqrt(sobelx**2+sobely**2)
plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()
Как вы можете видеть, лапласиан фильтр не помогло all-- на самом деле, чашка и диск даже не видны. Sobelx и sobely по крайней мере, дали некоторый контур внешнего круга (диска)
Я также попробовал абсолютное значение лапласиана:
final = np.absolute(laplacian)
plt.imshow(final, cmap = 'gray')
plt.show()
и я получил этот результат:
Я также попытался применения Difference of Gaussians method используя этот код:
#difference of gaussians
blur1 = cv2.GaussianBlur(img,(3,3),1)
blur2 = cv2.GaussianBlur(img,(5,5),1.1)
difference = blur2 - blur1
plt.imshow(difference, cmap = 'gray')
plt.show()
Но это также меня не доставит. Я бы очень признателен за помощь в том, как я могу найти чашку и диск на этом изображении.
Я думаю, что команда imshow автоматически масштабирует изображение так, чтобы максимальное значение белого цвета, а самый низкий черный. Поскольку у вас очень сильное закругление вокруг кругового изображения, будет трудно увидеть более слабые края внутри – HugoRune
@ShalinShah попытается нарисовать абсолютные значения вместо знаковых значений лапласиана – Micka
@HugoRune Я обрезал изображение, чтобы изображение было теперь только внутренняя часть и очень сильный край ушли .... но результат не изменился вообще –