目的:
1、读出rice.png文件,观察图像数据,并尝试修改图像数据矩阵的值,再将图像显示出来,观察图像颜色变换;
2、显示rice.png图像的灰度直方图,对其做对比度增强处理即调整其灰度值,显示调整后的灰度直方图;
原图:
(rice.png文件)
代码:
close all;
clear;
clc;
image=imread('rice.png'); %读取与代码同一文件下的rice.png文件,或换成绝对路径
figure(1);
subplot(1,2,1);
imshow(image); %显示rice.png图像
title('rice.png原图');
image_data=imfinfo('rice.png'); %读取rice.png图像信息,在工作区image_data中查看
image_1=imread('rice.png');
for i=123:178
for k=23:78
image_1(i,k)=256; %修改123行23—78列到178行23—78列图像数据矩阵的值为256【注1】
end
end
figure(1);
subplot(1,2,2);
imshow(image_1); %显示修改图像数据矩阵后的图像
title('修改图像数据矩阵的部分值');
figure(2);
subplot(1,2,1);
imhist(image); %显示rice.png的灰度直方图
title('rice.png的灰度直方图');
xlabel('灰度值');
ylabel('像素的概率密度');
imageCE=imadjust(image,[0.20,0.70],[]);%对原图rice.png进行对比度增强处理【注2】
figure(2);
subplot(1,2,2);
imhist(imageCE); %显示对比度增强后图像的灰度直方图
title('rice.png对比度增强后的灰度直方图');
xlabel('灰度值');
ylabel('像素的概率密度');
figure(3);
subplot(1,2,1);
imshow(image); %显示原图
title('原图');
subplot(1,2,2);
imshow(imageCE); %显示对比度增强后的图片
title('对比度增强');
【注1】:灰度值从0—256颜色由黑变白由深入浅;
【注2】:imadjust函数:
语法格式:J=imadjust(I,[low_in,hige_in],[low_out,high_out]);
代码中选择[0.20,0.70]原因:
由原图rice.png的灰度直方图得,像素的灰度值主要集中在[50,180]之间(灰度值为[1,256]),将其调整(换算)到[0,1]之间,灰度值主要集中在[0.20,0.70]之间;
imadjust(image,[0.20,0.70],[])中“[]”表示对全局起作用;
运行结果:
(原图的灰度直方图显示图像未能有效利用,对比度增强后的灰度直方图显示图像量化恰当,对原始图像的灰度直方图进行了拉伸,覆盖了全部灰度范围)
(图像信息)
结:
matlab进行图像处理的新手,会继续分享自己做过的图像处理的实验,未来也希望自己可以在图像处理这个方向进行深造,请各位大佬多多指点,也希望可以跟各位matlab图像处理的新手一起学习共同进步!!!