欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matlab实现图像灰度图,绘制直方图,直方图均衡化

程序员文章站 2022-07-11 12:48:15
...

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,此映射偏重更低数(灰暗)输出,如果省略此参数,默认为(线性映射).如图

Matlab实现图像灰度图,绘制直方图,直方图均衡化


示例代码:

%加载第一幅图像对其进行处理
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(‘灰度调整后直方图’);


运行结果如图所示:

Matlab实现图像灰度图,绘制直方图,直方图均衡化