6、用模糊算法进行亮度均衡,利用相应函数获得以下结果
四、Experiment Results & Appendix( programs)
显示原图和直方图
clear all;clc;
f=imread('C:\PICTURE_YUWEI\Fig0354(a)(einstein_orig).tif'); %1. 显示图 Fig0354(a)(einstein_orig).tif ,作出其直方图并调整参数
figure(1);%显示原图和直方图
subplot(1,2,1);
imshow(f);
title('EINSTEIN');%标注图的题目为:EINSTEIN
subplot(1,2,2);
imhist(f);%显示它的直方图
axis([0 255 0 40000]);%根据实验要求,确定纵横轴的范围
title('直方图');
分别用bar和stem函数显示直方图
figure(2);%分别用bar和stem函数显示直方图
subplot(1,3,1);
h=imhist(f,25);%把255个灰度值分成25个段
horz=linspace(0,255,25);%生成向量,范围为0到255,向量中有均匀排列的25个点
bar(horz,h);%y用bar方式显示直方图
axis([0 255 0 120000]);
set(gca,'xtick',0:50:255) %在x轴上以50为单位标记刻度
set(gca,'ytick',0:20000:120000);
title('bar 默认宽度的直方图');
subplot(1,3,2);
bar(horz,h,0.5);%用bar方式显示直方图,设置bar的宽度为0.5倍默认宽度
axis([0 255 0 120000]);
set(gca,'xtick',0:50:255);
set(gca,'ytick',0:20000:120000);
title('bar 0.5倍默认宽度的直方图');
subplot(1,3,3);
stem(horz,h);%用杆状图显示直方图
axis([0 255 0 120000]);
set(gca,'xtick',0:50:255)
set(gca,'ytick',0:20000:120000);
title('stem');
用plot绘制曲线图
figure(3);
plot(horz,h);%用plot绘制曲线图
axis([0 255 0 120000]);
set(gca,'xtick',0:50:255)
set(gca,'ytick',0:20000:120000);
title('plot');
用imadjust函数调整图像对比度,并用imhist查看调整前后直方图的变化
figure(4);%用imadjust函数调整图像对比度,并用imhist查看调整前后直方图的变化
subplot(2,2,1);
f1=imadjust(f,[0 1],[0 1],0.5);%两个矩阵分别是变化前后的范围
imshow(f1);
title('gamma=0.5<1时,图像变亮');%图象上凸
subplot(2,2,2);
imhist(f1);%图像的直方图右移,灰度值变高
subplot(2,2,3);
f2=imadjust(f,[0 1],[0 1],2);%gamma=2>1
imshow(f2);
title('gamma=2>1时,图像变暗');
subplot(2,2,4);
imhist(f2);
用histeq进行直方图均衡化,并用imhist查看均衡化前后直方图的变化
figure(5);%用histeq进行直方图均衡化,并用imhist查看均衡化前后直方图的变化
subplot(2,2,1);
imshow(f);
subplot(2,2,2);
imhist(f);
title('原图的直方图');
subplot(2,2,3);
g=histeq(f,256);%直方图均衡
imshow(g);
subplot(2,2,4);
imhist(g);%显示均衡后的直方图
title('均衡后的直方图');
用模糊算法进行亮度均衡,利用相应函数获得以下结果
%用模糊算法进行亮度均衡,利用相应函数获得以下结果
addpath('C:\PICTURE_YUWEI\dipum_toolbox_2.0.2');%添加工具包
udark=@(z)1-sigmamf(z, 0.35, 0.5);%进行模糊处理的隶属度函数
ugray=@(z)triangmf(z, 0.35, 0.5, 0.65);
ubright=@(z)sigmamf(z, 0.5, 0.65);
udarker=@(z)bellmf(z, 0.0, 0.1);
umidgray=@(z)bellmf(z, 0.4, 0.5);
ubrighter=@(z)bellmf(z, 0.8, 0.9);
outmf={udark; ugray; ubright};%表示输出模糊函数
rules={udarker; umidgray; ubrighter}; %表示输入
F=fuzzysysfcn(outmf, rules, [0,1]); %使用fuzzysysfcn函数及逆行模糊处理
z=linspace(0, 1, 256);%产生0-1范围内的指定数量点数,等分为256份,并返回一个行向量。
T=F(z);
I=f;
g=intrans(I, 'specified', T);
figure(5);
subplot(1,3,1);
plot(T);%灰度值分布
title('灰度值分布');
subplot(1,3,2);
imshow(g);%模糊处理的结果
title('模糊处理的结果');
subplot(1,3,3);
imhist(g);
title('模糊处理之后的直方图');
五、Conclusions:: tell me what you learned.
1. 在实现会出直方图时,原先没有注意到纵坐标的范围,所以有如下输出:
和题目中的不符:
所以学到了如何设置横纵坐标的范围:axis([0 255 0 40000]);
2. 学会了使用条形图、杆状图、和曲线来显示灰度图。学会了改变图像的对比度,并且知晓了灰度的变化:当对比度提高时,灰度下降。
3. 学习了使用模糊算法来对图像进行亮度的均衡。