Удаление размытости изображения для обнаружения краев

У меня есть это изображение:

Удаление размытости изображения для обнаружения краев

Я пытаюсь сфокусировать фон, чтобы определить края изображения. Какие методы доступны мне (либо на пробел / частота)?


Я пробовал следующее:

kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
im = cv2.filter2D(equ, -1, kernel)

Это выводит это изображение:

Удаление размытости изображения для обнаружения краев

Я также поиграл с центральным значением, но без положительного результата.

Я тоже пробовал это:

psf = np.ones((5, 5)) / 25
equ = convolve2d(equ, psf, 'same')
deconvolved = restoration.wiener(equ, psf, 1, clip=False)
plt.imshow(deconvolved, cmap='gray')

Без заметных изменений изображения.

Любая помощь по этому поводу приветствуется!


Обновлено:

Вот код, который я взял из здесь:

psf = np.ones((5, 5)) / 25
equ = convolve2d(equ, psf, 'same')
deconvolved, _ = restoration.unsupervised_wiener(equ, psf)
plt.imshow(deconvolved, cmap='gray')

и вот результат:

Удаление размытости изображения для обнаружения краев

Если вы хотите сфокусировать фон, способ Только - сделать снимок с фоном в фокусе. Все те телепрограммы, в которых они улучшаются в цифровом виде, чтобы извлекать четкие детали номерных знаков, лиц и т. д. Из размытых изображений или изображений с низким разрешением ... на самом деле невозможно. Вы можете интерполировать детали и создать наиболее подходящее решение, но вы не можете добавить детали, которых нет в самом начале.

Mick 13.07.2018 10:14

«Это выводит это изображение» - и оно действительно менее размытое, поэтому миссия выполнена. Компьютер не может волшебным образом добавить детали, которых нет на исходном изображении.

Jongware 13.07.2018 10:19

Дело в том, что он у меня по заданию из университета ... это моя задача De-blurring (de-noising) of the image by application of a suitable filter (either on space/frequency filed) and experiment with different choices and provide comments.

Stefano Pozzi 13.07.2018 10:38

@ usr2564301 Действительно, вы правы, но в качестве следующего шага мне нужно выполнить обнаружение краев, и менее размытое изображение, на мой взгляд, будет работать хуже, чем исходное.

Stefano Pozzi 13.07.2018 10:55

Ах, вы должны редактировать свой вопрос и добавить к нему причина. Я не имею в виду то, что это задание в университете - нам все равно, - но потому, что вам это нужно в качестве входных данных для следующего шага, обнаружения края.

Jongware 13.07.2018 10:59

вы можете попробовать изменить размер изображения несколько раз. Размытые объекты должны быть «резкими» в более низких масштабах (но, очевидно, с низкой детализацией). Только убедитесь, что при создании вашей «масштабной космической пирамиды» не добавляется никакого дополнительного размытия.

Micka 13.07.2018 11:46

@Micka: вы правы, но в данном случае это изображение настолько размыто, что даже уменьшение в линейный коэффициент 8 не дает хороших краев (а изображение микроскопическое). А для уменьшения в любом случае необходимо применить некоторую фильтрацию нижних частот, потому что изображение зашумленное.

Yves Daoust 18.07.2018 10:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
1 469
1

Ответы 1

Удаление размытия изображений (к сожалению) довольно сложно, причина этого в том, что размытие устраняет шум, поэтому есть несколько (зашумленных) изображений, которые будут давать одно и то же изображение, когда вы его размываете. Это означает, что для компьютера не существует простого способа «выбрать», какое из шумных изображений при удалении размытия. Из-за этого удаление размытия часто приводит к появлению зашумленных изображений.

Теперь вы можете спросить, как фотографы делают это на самом деле. На самом деле они не размывают изображения, а повышают их резкость (что немного отличается). Когда вы увеличиваете резкость изображения, вы увеличиваете контраст около границ, чтобы выделить их (вот почему вы иногда видите ореол вокруг границ на изображениях, которые были слишком сильно увеличены).

В вашем случае вы хотите удалить размытие (и нет ядра свертки, которое позволило бы вам это сделать). Чтобы сделать это правильно, вам нужно знать, какой процесс в первую очередь размыл изображение (то есть если вы не хотите тратить тысячи долларов на специальное программное обеспечение или у вас нет степени магистра по математике или астрономии). .

Если вы все еще хотите это сделать, я бы порекомендовал поискать деконволюцию, а если вы не знаете процесс размытия, слепую деконволюцию. В скимейже есть несколько (грубых) функций, которые могут помочь (http://scikit-image.org/docs/stable/auto_examples/filters/plot_resturation.html#sphx-glr-auto-examples-filters-plot-resturation-py).

Наконец, последняя ссылка в Jax Briggs кажется полезной, но я бы не скрестил пальцы для волшебных результатов.

Спасибо за ответ! Я уже изучал это, но в результате получал странные белые изображения (некоторые черные пиксели). Я отправлю код и полученное изображение в качестве редактирования

Stefano Pozzi 13.07.2018 11:29

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