Возможный дубликат - Как применить вейвлеты Габора к изображению?
Я просмотрел ответы в приведенной выше ссылке, но я действительно не мог следовать за ней. Первый ответ, принятый, умножает БПФ изображения на себя внутри, прежде чем выполнять обратное БПФ. Это вообще не имело для меня смысла
Вот мой вопрос. Я пытаюсь воспроизвести результаты статьи «Многослойная сегментация кровеносных сосудов на основе порогового значения для скрининга диабетической ретинопатии» (http://search.proquest.com/openview/94a1d9b4eed15c442da4f8a62c82a83b/1?pq-origsite=gscholar&cbl=326339)
def gabor_wavelet(rows, cols, kmax, f, orientation, scale, delt2):
k = (kmax / (f ** scale)) * np.exp(1j * orientation * np.pi / 8)
kn2 = np.abs(k) ** 2
gw = np.zeros((rows, cols), np.complex128)
for m in range(int(-rows/2) + 1, int(rows / 2) + 1):
for n in range(int(-cols/2) + 1, int(cols / 2) + 1):
t1 = np.exp(-0.5 * kn2 * (m**2 + n**2) / delt2)
t2 = np.exp(1j * (np.real(k) * m + np.imag(k) * n))
t3 = np.exp(-0.5 * delt2)
gw[int(m + rows/2 - 1),int(n + cols/2 - 1)] = (kn2 / delt2) * t1 * (t2 - t3)
return gw
Для построения вейвлетов (или это фильтры?) Для масштаба = от 1 до 4 и ориентации = от 1 до 8 создаются следующие вейвлеты (построение реальной части):
R = 128
C = 128
kmax = np.pi / 2
f = np.sqrt(2)
delt2 = (2 * np.pi) ** 2
fig = plt.figure()
for v in range(1, 5):
for u in range(1, 9):
gw = gabor_wavelet(R, C, kmax, f, u, v, delt2)
fig.add_subplot(4, 8, 8*(v-1) + u)
plt.imshow(np.real(gw), cmap='gray')
plt.show()
Теперь основное внимание уделяется изображению сетчатки, а именно перевернутому зеленому каналу, где кровеносные сосуды очень контрастны. Я должен выполнить "некоторую операцию" с ним, используя один из вышеперечисленных вейвлетов (или фильтров? Пожалуйста, исправьте здесь разницу между фильтром и вейвлетом).
Какую операцию я должен выполнить между полученным вейвлетом и изображением, чтобы увеличить контрастность сосудов?:
Вот изображение абсолютного значения вейвлета:
Пожалуйста, помогите мне с этим. Я застрял здесь на несколько дней без особой помощи от гугления и чтения статей. Я новичок в сфере.
Большое спасибо
cv2.filter2D
делает для больших ядер. - person Cris Luengo   schedule 08.02.2018