基于规则的模糊集合对图像对比度增强的matlab程序,把增强后的图像显示出来
时间: 2023-08-21 08:02:48 浏览: 77
好的,以下是一个示例Matlab程序,其中使用基于规则的模糊集合来增强图像对比度,并将增强后的图像显示出来:
```matlab
% 读取图像
img = imread('lena.jpg');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算灰度图像直方图
hist = imhist(gray_img);
% 计算图像的平均亮度值
mean_val = mean2(gray_img);
% 计算模糊集合
dark = trapmf(hist, [0, 0, mean_val, mean_val*2/3]);
normal = trimf(hist, [mean_val/2, mean_val, mean_val*3/2]);
bright = trapmf(hist, [mean_val/3, mean_val, 255, 255]);
% 设定规则
rule1 = min(dark, bright);
rule2 = normal;
rule3 = min(bright, dark);
% 计算输出模糊集合
out_dark = trapmf(hist, [0, 0, mean_val*2/3, mean_val/2]);
out_normal = trimf(hist, [mean_val/2, mean_val, mean_val*3/2]);
out_bright = trapmf(hist, [mean_val/3, mean_val, 255, 255]);
% 计算输出结果
out_hist = max(min(rule1, out_dark), min(rule2, out_normal));
out_hist = max(out_hist, min(rule3, out_bright));
% 应用增强后的直方图
enhanced_gray_img = intlut(gray_img, uint8(out_hist));
% 显示原始图像和增强后的图像
subplot(1,2,1),imshow(gray_img);title('Original Image');
subplot(1,2,2),imshow(enhanced_gray_img);title('Enhanced Image');
```
在上面的代码中,我们首先使用`imread`函数读取了名为lena.jpg的图像,并将其转换为灰度图像。然后,我们计算了灰度图像的直方图和平均亮度值。接着,我们定义了三个模糊集合:暗、正常和亮,以及三条规则。然后,我们计算了输出模糊集合,并将其应用于原始灰度图像以增强其对比度。最后,我们将原始图像和增强后的图像一起显示在同一个窗口中。
希望这可以帮助到您!
阅读全文