代码语言:javascript复制
import cv2
from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#读取图像
cv2.imshow('original',img)
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst=sfr.entropy(grayImage,disk(1))#半径为1的圆形滤波器
cv2.imshow("result",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
算法:entropy滤波是图像局部熵,熵是使用基为2的对数运算出来的,将局部区域的灰度值分布进行二进制编码,返回编码的最小值。
- 图像熵是一种特征的统计形式,反映了图像包含的平均信息量
- 当图像为纯色图时(白或黑),不包含任何的目标,只有一个灰度值,此时熵最小,H=0,图像的信息量为0
- 当图像包含N个灰度值时,即图像每个像素的灰度值都不同,此时熵最大,H=logN,图像的信息量最大
- 图像每个像素灰度都不同,图像每个单一像素都是一个独立地物目标,信息量为最大N,类似于地图充满了物体
- 图像的熵H越大,图像包含的像素灰度越丰富,灰度分布越均匀,图像的目标越多,图像的信息量越大,反之则反