любой существующий код / ​​библиотека для оценки резкости или размытости изображения в Python? - PullRequest
0 голосов
/ 19 октября 2019

Я хотел бы найти существующий код / ​​библиотеку для оценки резкости / размытости на обычных изображениях. (предпочитаю в Python) Мне нужно будет сравнить производительность различных алгоритмов позже.

У меня более 10000 изображений МРТ-сканирования с различным «качеством» (резкость / размытость). Мне нужно написать код для фильтрации изображений с определенным «качеством» (резкость / размытость), который зависит от пользователя. Поэтому я пытаюсь исследовать оценку резкости / размытости изображений на медицинских изображениях. Мой супервайзер сказал мне, что в Интернете существует много кода для оценки резкости / размытости на обычных изображениях (возможно, это не эталонная метрика резкости). Она попросила меня поискать их и сначала опробовать на обычных изображениях. Тогда попробуйте узнать об их алгоритмах. Я искал об этом в Интернете и нашел несколько страниц, которые имеют отношение к делу. Однако многие из них устарели.

Например: On Метрика резкости изображения страница,

Совокупная вероятность обнаружения размытия (CPBD) https://ivulab.asu.edu/software/quality/cpbd

, кажется, больше не работает. Я предполагаю, что причина в том, что функция imread удалена из новой библиотеки scipy. (см. позже код и сообщение об ошибке) Я думаю, что я могу попробовать старую версию "scipy" позже. Тем не менее, я хотел бы найти более доступный в настоящее время код / ​​библиотеку для оценки резкости / размытости изображения. Кроме того, моя рабочая среда будет в Windows 10 или CentOS-7.

Я пробовал следующий код с CPBD:

import sys, cpbd

from scipy import ndimage

input_image1 = ndimage.imread('D:\Work\Project\scripts\test_images\blur1.png', mode='L')

input_image2 = ndimage.imread('D:\Work\Project\scripts\test_images\clr1.png', mode='L')

print("blurry image sharpness:")
cpbd.compute(input_image1)

print("clear image sharpness:")
cpbd.compute(input_image2)

Сообщение об ошибке из оболочки Python 3.7 (запускается в Window 10):

Traceback (most recent call last):
  File "D:\Work\Project\scripts\try_cpbd.py", line 1, in <module>
    import sys, cpbd
  File "D:\Program_Files_2\Python\lib\site-packages\cpbd\__init__.py", line 3, in <module>
    from .compute import compute
  File "D:\Program_Files_2\Python\lib\site-packages\cpbd\compute.py", line 14, in <module>
    from scipy.misc import imread #Original: from scipy.ndimage import imread
ImportError: cannot import name 'imread' from 'scipy.misc' (D:\Program_Files_2\Python\lib\site-packages\scipy\misc\__init__.py)

1 Ответ

0 голосов
/ 20 октября 2019

Кажется, что пакет cpbd не обновлялся некоторое время. Это сработало для меня со следующими шагами:

Редактировать "D: \ Program_Files_2 \ Python \ lib \ site-packages \ cpbd \ compute.py":

Прокомментировать последние 4 строки, начиная с:

#if __name__ == '__main__':

Используйте код Python:

import cpbd

import cv2

input_image1 = cv2.imread('blur1.png')

if input_image1 is None:
     print("error opening image")
     exit()

input_image1 = cv2.cvtColor(input_image1, cv2.COLOR_BGR2GRAY)

print("blurry image sharpness:")

cpbd.compute(input_image1)
...