参考NEFU的数字图像处理实验课代码。版权归NEFU!仅供学习参考!

1 步骤

(1)计算并绘制原始pout图像的灰度直方图;
(2)根据离散累计分布函数,对原始灰度直方图进行均衡化处理,绘制均衡化后的灰度直方图;
(3)生成均衡化处理后的新图像,显示并保存。
(4)比较原始pout图像和新图像的对比度。

2 Matlab代码

clc;
clear;
grayimage=imread('pout.tif');      %读取一幅256级灰度图像,作为原始图像
subplot(2,2,1);  imshow(grayimage);  title('原始图像');       %显示原始图像
[m,n]=size(grayimage);      %获取图像大小
%以下计算原始图像中各灰度级出现的概率
gp=zeros(1,256);  %初始化一维行向量gp
for i=1:256
   gp(i)=length(find(grayimage==(i-1)))/(m*n);  %计算每个灰度级出现的概率
end
subplot(2,2,2);  bar(0:255, gp);  %显示原始图像的灰度直方图
title('原始图像的灰度直方图');
xlabel('灰度值');   ylabel('出现概率');
%以下进行直方图均衡化处理,根据离散累计分布函数,求出所有新的灰度级
S1=zeros(1,256);
S2=zeros(1,256);
temp=0;
for i=1:256
   temp=temp+gp(i);
   S1(i)=temp;
end
S2=round(S1*255);  %将Sk归到相近的灰度级上
%以下计算各个新的灰度级出现的概率
newgp=zeros(1,256);
for i=1:256
   newgp(i)=sum(gp(find(S2==(i-1))));
end
subplot(2,2,3);  bar(0:255, newgp);  %显示均衡化后的灰度直方图
title('均衡化后的灰度直方图');
xlabel('灰度值');  ylabel('出现概率');
%用新的灰度值填充各像素点,从而获得均衡化处理之后的新图像
newgrayimage=grayimage;
for i=1:256
   newgrayimage(find(grayimage==(i-1)))=S2(i);
end
subplot(2,2,4);  imshow(newgrayimage);  %显示均衡化处理后的新图像
title('均衡化后的图像');
imwrite(newgrayimage,'newpout.tif');   %保存均衡化处理后的新图像
0
Posted in Matlab

I=imread('pout.tif ');  
subplot(1, 3, 1),  imshow(I),  title('原始图像');
G=imnoise(I, 'gaussian');
subplot(1, 3, 2),  imshow(G),  title('高斯噪声图像');
imwrite(G, 'Gpout.tif');
J=imnoise(I, 'salt & pepper', 0.05);     
subplot(1, 3, 3),  imshow(J),  title('椒盐噪声图像');
imwrite(J, 'Jpout.tif');
0
Posted in Matlab

A=imread('football.jpg');  %也可读入RGB图像peppers.png
R=A(:, :, 1);
G=A(:, :, 2);
B=A(:, :, 3);
subplot(2, 2, 1),  imshow(A),  title('原始图像');
subplot(2, 2, 2),  imshow(R),  title('R层图像');
subplot(2, 2, 3),  imshow(G),  title('G层图像');
subplot(2, 2, 4),  imshow(B),  title('B层图像');
0
Posted in Matlab

%读入灰度图像pout,并显示
I_huidu=imread('pout.tif'); 
figure(1),  imshow(I_huidu) ,  title('灰度图像');
%读入二值图像circles,并显示,注意查看图像矩阵(uint8,0表示黑,255表示白)
I_erzhi=imread('circles.png');   
figure(2),  imshow(I_erzhi) ,  title('二值图像');
%读入二值图像blobs,并显示,注意查看图像矩阵(logical,0表示黑,1表示白)
I_erzhi=imread('blobs.png');   
figure(2),  imshow(I_erzhi) ,  title('二值图像');
%读入RGB图像football,并显示
I_RGB=imread('football.jpg'); 
figure(3),  imshow(I_RGB) ,  title('RGB图像');
%读入索引图像trees,并显示
[I_suoyin, colormap]=imread('trees.tif'); 
figure(4),  imshow(I_suoyin, colormap) ,  title('索引图像');

0
Posted in Matlab