Python_OpenCV_实现模糊集合用于图像增强(对比度提升,空间滤波)

本文部分内容来自:
https://blog.csdn.net/qq_37764129/article/details/82893966
模糊集的详细原理请看冈萨雷斯的数字图像处理教程,这里不再详细赘述。
下面将模糊集用于图像增强的步骤罗列如下:
使用模糊集合来进行灰度变换,从而增强图像。首先可以在常理下考虑一下,一般的对于动态范围较小的图像,我们一般的处理的方法是灰度拉升,或者直方图均衡。

这两种的方法的本质就是,让原图较暗的像素更加暗,让原图较亮的像素更加亮。那么,我们规定如下模糊规则
R1:IF 一个像素是暗的,THEN 让这个像素更暗;
R2:IF 一个像素是灰的,THEN 让他保持是灰的;
R3:IF 一个像素是亮的,THEN 让这个像素更亮;
这个规则就代表了我们的处理方法。当然,IF条件中的像素是暗的(或者灰的,或者是亮的),这个概念都是模糊的。同理THEN结论中的更暗(或者保持灰的,或者更亮)亦是模糊的。为此,我们需要确立一个隶属度函数,从而来判断一个像素对于三个条件的隶属度。

实际上,隶属度函数的确定是很复杂的,然而,这里我们则尽量想得简单一点。首先,一个像素是暗的(模糊),那么其隶属度函数大致的形状是,

在低于某个值的时候域隶属度为1,
在灰度越过某一个值之后,其隶属度为0,
当然。然后与之间进行线性插值,那么,我们就可以得到R1的隶属度函数了。同理,R2与R3也是一样的。
为了简单起见,我们将THEN结论中的更暗设置为较为简单的函数。

为了让这个像素更黑,其输出都为0。同理,
为了使这个像素保持灰的,我们将其输出设为0.5,
为了使得一个像素更亮,我们将其设置为1。
根据以上讨论,我们所决定的隶属度函数如下所示。
在这里插入图片描述
使用输入的隶属度函数,可以得到模糊化后的数据。
对于一个像素Z0,需要根据规则R1,R2与R3,计算出Z0所对应的隶属度Udark(Z0),Ugray(Z0),Ubright(Z0),这个过程,称之为模糊化。将一个输入量模糊化,所使用的函数(或者说是对应关系),称之为知识库。
模糊化之后,得到一个像素所对应的三个隶属度Udark(Z0),Ugray(Z0),Ubright(Z0)之后,就可以进行反模糊化了。反模糊化的算法很多,这里使用简单的重心法去进行计算。
V0={Udark(Z0)*Vd+Ugray(Z0)*Vg+Ubright(Z0)*Vb}/{Udark(Z0)+Ugray(Z0)+Ubright(Z0)}
其中Vd,Vg,Vb为输出的单一值,对于一个像素Z0,需要根据规则R1,R2与R3,计算出Z0所对应的隶属度Udark(Z0),Ugray(Z0),Ubright(Z0)。得到一个权值衡量后的成熟度估计值,为输出值。到此,就得到了输出V0,整个算法的效果如下图所示。
在这里插入图片描述
可以看到爱因斯坦的照片的对比度得到了很大的提升,以下为对应的直方图,可以看到直方图分布变得更加宽阔,而且输出图像的直方图更加偏向暗部。但是如果使用直方图均衡化,图像会变得白的更白,黑的更黑。
在这里插入图片描述
以下为PythonOpencv代码实现:

import cv2 as cv
import matplotlib.pyplot as plt

def exchange(image):
	image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
	for row in range(0,image.shape[0]):
		for col in range(0,image.shape[1]):
			m=image[row][col]/255.00
			if m<=0.2700:
				image[row][col]=0
			elif m>0.2700 and m<=0.5000:
				image[row][col]=(m-0.27)/0.23*127
			elif m>0.5000 and m<=0.7200:
				image[row][col]=(m-0.5)/0.22*255+(0.72-m)/0.22*127
			else:
				image[row][col]=255

	cv.imshow('dst',image)

src= cv.imread('C:/Python/OpenCV/a.jpg')
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imshow('src',gray)
exchange(src)
cv.waitKey(0)

这里是以0.27 0.72 作为临界点的,如果读者感兴趣可以修改上述临界值,会看到更多效果。
读者也可以将原图的直方图均衡化的结果图像输出,与模糊集的结果对比下。
未完待续。

猜你喜欢

转载自blog.csdn.net/m0_47472749/article/details/114556420