如何计算图像上的熵



当我想计算图像的熵时,我只得到了空白的白色图像。我怎样才能用正确的方式做?

def entropy_of_image(image):
image_gray = rgb2gray(image)
f_size = 20
radi = list(range(1,10))
entropy_tmp = entropy(image_gray, disk(radi[8])) 
plt.savefig('images/tmpentropy.jpg')  
return entropy_tmp  

我称之为

default_file = 'images/myimage.jpg'

filename = os.path.join(default_file)
img = io.imread(filename)
img = img_as_float(img)
gray_entropy = entropy_of_image(img)

使用这些:

from skimage import data
from skimage import data_dir
from skimage.util import img_as_ubyte
from skimage.filters.rank import entropy
from skimage.morphology import disk
from skimage import io
import os
from skimage.transform import rescale, resize, downscale_local_mean
import matplotlib.pyplot as plt
from skimage.io import imread, imshow
from skimage import data
from skimage.util import img_as_ubyte
from skimage.filters.rank import entropy
from skimage.morphology import disk
from skimage import data, color
from skimage.color import rgb2hsv, rgb2gray, rgb2yuv
from skimage.feature import canny
from skimage.transform import hough_circle, hough_circle_peaks
from skimage.draw import circle_perimeter

当您编写plt.savefig('images/tmpentropy.jpg')时,您认为pyplot会向该JPEG文件写入什么?你没有给pyplot任何要写的数组。savefig将当前图形窗口写入文件。因为你没有创建一个图形窗口,也没有向该图形窗口写入任何内容,所以没有什么可以保存到文件中,在这种情况下,pyplot显然更喜欢写一个空白图像,而不是给出错误消息。

如果您首先在图形窗口中显示您的图像,那么savefig将有一些内容要写入该文件。然而,它将是图形窗口中的内容:周围有轴的图像和大量空白。这就像是对pyplot显示器进行屏幕截图:

plt.imshow(entropy_tmp)
plt.savefig('images/tmpentropy.jpg')

将图像保存到文件的更好方法是使用适当的图像文件写入功能,如imageio.imwritematplotlib.pyplot.imsaveskimage.io.imsave等。

由于您使用scikit图像来读取图像文件,因此让我们也使用它来编写输出图像文件:

default_file = 'images/myimage.jpg'
filename = os.path.join(default_file)
img = io.imread(filename)
img = img_as_float(img)
gray_entropy = entropy_of_image(img)
skimage.io.imsave('images/tmpentropy.jpg', gray_entropy)  

(不要让你的计算函数entropy_of_image()写图像文件,让每个函数只做一件事!(

最新更新