python 中是否存在任何现有的 code/library 图像清晰度或模糊度估计?
any existing code/library for image sharpness or blurriness estimation in python?
我想找到一些现有的 code/library 用于对正常图像进行 sharpness/blurriness 估计。 (prefer in Python) 稍后我需要比较不同算法的性能。
我有 10000 多张不同 "quality"(sharpness/blurriness) 的 MRI 扫描图像。我需要编写代码来过滤具有特定 "quality"(sharpness/blurriness) 的图像,这取决于用户。因此,我正在尝试研究医学图像的图像 sharpness/blurriness 估计。我的主管告诉我,互联网上有很多现有代码可以对正常图像进行 sharpness/blurriness 估计(也许是无参考清晰度指标)。她让我搜索它们并先在普通图像上试用它们。然后尝试了解他们的算法。
我在互联网上搜索过这个并找到了一些相关的页面。然而,其中很多已经过时了。
例如:
在
Image sharpness metric
页,
模糊检测的累积概率 (CPBD) https://ivulab.asu.edu/software/quality/cpbd
似乎不再有效了。我想原因是 "imread" 函数已从新的 "scipy" 库中删除。 (请看后面的代码和报错信息)我觉得以后可以试试老版本的"scipy"。但是,我想找到更多当前可用的 code/library 关于图像 sharpness/blurriness 估计。
此外,我的工作环境将在 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 shell 的错误消息(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)
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)
由于 scipy.misc.imread 自 1.0.0 起已被弃用,并在 1.2.0 中被删除,我将使用 skimage.io.imread 代替(在大多数情况下这是一个直接替代)。
编辑cpbd/compute.py
中的代码
import skimage.io
input_image1 = skimage.io.imread('blur1.png')
cv2 也可以(或其他选项:imageio、PIL、...)但 skimage 往往更容易 install/use。
以下步骤对我有用:
从 C:\ProgramData\Anaconda3\Lib\site-packages\cpbd\compute.py
或您安装它的任何地方打开 compute.py
。您会发现以下代码:
from scipy.ndimage import imread
替换为:
from skimage.io import imread
如果无法保存compute.py
文件,则将其复制到桌面,按上述方式编辑并替换C:\ProgramData\Anaconda3\Lib\site-packages\cpbd\compute.py
中的文件。
根据 Baj Mile 的回答,我做了以下操作并且对我有用。
打开 cpbd\compute.py 文件
注释行:from scipy.ndimage import imread
添加了行:import cv2
对主要部分进行了以下更改:
if __name__ == '__main__':
#input_image = imread(argv[1], mode='L')
input_image=cv2.imread(argv[1])
sharpness = compute(input_image)
print('CPBD sharpness for %s: %f' % (argv[1], sharpness))
关闭 compute.py 文件。
在主要代码中:
import cpbd
import cv2
input_image1 = cv2.imread('testimage.jpg')
input_image1 = cv2.cvtColor(input_image1, cv2.COLOR_BGR2GRAY)
cpbd.compute(input_image1)
我想找到一些现有的 code/library 用于对正常图像进行 sharpness/blurriness 估计。 (prefer in Python) 稍后我需要比较不同算法的性能。
我有 10000 多张不同 "quality"(sharpness/blurriness) 的 MRI 扫描图像。我需要编写代码来过滤具有特定 "quality"(sharpness/blurriness) 的图像,这取决于用户。因此,我正在尝试研究医学图像的图像 sharpness/blurriness 估计。我的主管告诉我,互联网上有很多现有代码可以对正常图像进行 sharpness/blurriness 估计(也许是无参考清晰度指标)。她让我搜索它们并先在普通图像上试用它们。然后尝试了解他们的算法。 我在互联网上搜索过这个并找到了一些相关的页面。然而,其中很多已经过时了。
例如: 在 Image sharpness metric 页,
模糊检测的累积概率 (CPBD) https://ivulab.asu.edu/software/quality/cpbd
似乎不再有效了。我想原因是 "imread" 函数已从新的 "scipy" 库中删除。 (请看后面的代码和报错信息)我觉得以后可以试试老版本的"scipy"。但是,我想找到更多当前可用的 code/library 关于图像 sharpness/blurriness 估计。 此外,我的工作环境将在 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 shell 的错误消息(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)
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)
由于 scipy.misc.imread 自 1.0.0 起已被弃用,并在 1.2.0 中被删除,我将使用 skimage.io.imread 代替(在大多数情况下这是一个直接替代)。
编辑cpbd/compute.py
中的代码import skimage.io
input_image1 = skimage.io.imread('blur1.png')
cv2 也可以(或其他选项:imageio、PIL、...)但 skimage 往往更容易 install/use。
以下步骤对我有用:
从 C:\ProgramData\Anaconda3\Lib\site-packages\cpbd\compute.py
或您安装它的任何地方打开 compute.py
。您会发现以下代码:
from scipy.ndimage import imread
替换为:
from skimage.io import imread
如果无法保存compute.py
文件,则将其复制到桌面,按上述方式编辑并替换C:\ProgramData\Anaconda3\Lib\site-packages\cpbd\compute.py
中的文件。
根据 Baj Mile 的回答,我做了以下操作并且对我有用。 打开 cpbd\compute.py 文件
注释行:from scipy.ndimage import imread
添加了行:import cv2
对主要部分进行了以下更改:
if __name__ == '__main__':
#input_image = imread(argv[1], mode='L')
input_image=cv2.imread(argv[1])
sharpness = compute(input_image)
print('CPBD sharpness for %s: %f' % (argv[1], sharpness))
关闭 compute.py 文件。
在主要代码中:
import cpbd
import cv2
input_image1 = cv2.imread('testimage.jpg')
input_image1 = cv2.cvtColor(input_image1, cv2.COLOR_BGR2GRAY)
cpbd.compute(input_image1)