#image-processing
#обработка изображений
Вопрос:
Ранее я опубликовал вопрос об алгоритме Ричардсона-Люси. У меня есть дополнительный вопрос, с которым я был бы признателен за помощь. Ниже приведен код Python, который я использую. Мое входное изображение уже размыто, поэтому я удалил строки программы, которые изначально должны были намеренно размыть изображение. Я получаю сообщение об ошибке «Предупреждение о времени выполнения: недопустимое значение, встречающееся в true_divide relative_blur = image / convolve(im_deconv, psf, mode= ‘same’)» Я был бы признателен за помощь в отладке этого. Я сохранил строки в программе, которые я прокомментировал, основываясь на приведенном ниже предложении.
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image, ImageFilter
from scipy.signal import convolve2d as conv2
from skimage import color, data, restoration
Image.open('TOFA-003_UV_Cured_Lincoln_Corrected.bmp').convert('L').save('TOFA-003_UV_Cured_Lincoln_Corrected_gray.bmp')
astro = Image.open('TOFA-003_UV_Cured_Lincoln_Corrected_gray.bmp')
psf = np.ones((5, 5)) / 25
#psf = np.ones((8, 8)) / 25
astro = conv2(astro, psf, 'same')
astro = astro/255
# Add Noise to Image
#astro_noisy = astro.copy()
#astro_noisy = (np.random.poisson(lam=25, size=astro.shape) - 10) / 255
#astro_noisy = astro_noisy/255
# Restore Image using Richardson-Lucy algorithm
deconvolved_RL = restoration.richardson_lucy(astro, psf, iterations=2)
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(8, 5))
plt.gray()
for a in (ax[0], ax[1], ax[2]):
a.axis('off')
ax[0].imshow(astro)
ax[0].set_title('Original Data')
#ax[1].imshow(astro_noisy)
#ax[1].set_title('Noisy data')
ax[2].imshow(deconvolved_RL, vmin=astro.min(), vmax=astro.max())
ax[2].set_title('Restoration usingnRichardson-Lucy')
fig.subplots_adjust(wspace=0.02, hspace=0.2,
top=0.9, bottom=0.05, left=0, right=1)
plt.show()
Комментарии:
1. Как
astro
выглядит изображение до размытия? Изображение на самом деле четкое или оно уже было размытым? Обратите внимание, что вы это делаетеastro = conv2(astro, psf, 'same')
, поэтому вы перезаписываете исходное изображение, поэтому мы его не видим.2. Здравствуйте. Я отредактировал свой оригинальный пост, добавив ссылку на «Начальное изображение». Это исходное изображение.
3. Это изображение уже размыто. Вы размываете его с помощью квадратного ядра размером 5×5, что будет иметь очень слабый эффект, затем вы отменяете это размытие. Все три изображения будут выглядеть очень похожими, потому что размытие на исходном изображении сильнее, чем у вашего ядра 5×5 box.
4. Здравствуйте. Я отредактировал свой последний пост, чтобы прокомментировать начальный шаг размытия.