Matlab图像处理转灰度图,绘制直方图,直方图均衡化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/keith_bb/article/details/51146456

1.imread()

MATLAB中图像读取函数与OpenCV一样是imread,可以打开指定路径图片,其路径表示方式与OpenCV中有些许不同如:

srcImage=imread('E:\MatlabWorkSpace\实验一\实验一图一.png');

路径符号为单"\",Opencv为双"\",其函数原型为:

A=imread(filename,fmt);



2.将打开的图像转换为灰度图rgb2gray

grayImage=rgb2gray(srcImage);


3.imwrite

保存图片,一定要注明图片格式如jpg,bmp,png等。原型如下:

imwrite(A,filename,fmt);

保存图片时可指定图片保存路径。如

imwrite(grayImage,'E:\MatlabWorkSpace\实验一\grayImage.jpg');


4.imhist

绘制图像直方图函数,直方图绘制后可直接显示,不需要用imshow进行显示。如:

imhist(grayImage);


5.imfinfo

读取图片信息包括Height、Width、Format、ColorType等信息,可利用此函数判断函数为彩图还是灰度图.如:

info=imfinfo('E:\MatlabWorkSpace\实验一\grayImage.jpg');

***此处貌似必须先将要读取的图片保存下来,之后指定图像所在路径,初学没发现其他方法,欢迎指正。


6.subplot

将图片放到一个窗口,需指定三个参数,原型如下:

subplot(m n p)

m、n、p分别代表该窗口中图像排列的行数、列数以及第几幅图片

可结合title使用


7.adapthisteq()

图像直方图均衡化

H1=adapthisteq(grayImage);

8.imadjust()

该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵。用法如下:

J=imadjust(I);

将灰度图像I中的亮度值映射到J中的新值,使得图像中1%的数据饱和至最低和最高亮度,这可以增加输出图像J对比度值,此用法相当于imadjust(I,stretchlim(I))


J=imadjust(I,[low_in,hing_in],[low_out,high_out])

将图像I中的亮度值映射到J中的新值即将low_in至high_in之间的值映射到low_out至high_out之间的值.low_in以下与high_in以上的值被剪切掉了,也就是说low_in以下的值映射到low_out,high_in以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]

low_in、high_in、low_out、high_out的值均在0~1之间,可由已知值除以255算出值。例如low_in为100则,该位置应为:100/255=0.392

J=imadjust(I,[low_in,hing_in],[low_out,high_out],gamma)

其中gamma指定描述值I和J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数(灰暗)输出,如果省略此参数,默认为(线性映射).如图




示例代码:

%加载第一幅图像对其进行处理
srcImage=imread('E:\MatlabWorkSpace\实验一\实验一图一.png');

%转化成灰度图
grayImage=rgb2gray(srcImage);
imwrite(grayImage,'E:\MatlabWorkSpace\实验一\grayImage.jpg');
info=imfinfo('E:\MatlabWorkSpace\实验一\grayImage.jpg');
%[M,N]=size(grayImage);

%在窗口中显示2*2排列图像
subplot(2,3,1);
imshow(grayImage);
title('原图像灰度图');

%绘制灰度直方图
subplot(2,3,2);
imhist(grayImage);
title('灰度直方图');
%[M,N]=size(hist);

%对灰度直方图均衡化处理
subplot(2,3,3);
H1=adapthisteq(grayImage);
imhist(H1);
title('直方图均衡化');

%调整图像灰度等级
%原图像灰度集中10~120,调整到100~200
dstImage=imadjust(grayImage,[0.039,0.470],[0.392,0.784],0.6);
subplot(2,3,4);
imshow(dstImage);%显式调整后图像
title('灰度级调整后');
subplot(2,3,5);
imhist(dstImage);
title('灰度调整后直方图');


运行结果如图所示:





猜你喜欢

转载自blog.csdn.net/keith_bb/article/details/51146456