Matlab图像处理转灰度图,绘制直方图,直方图均衡化
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(\’灰度调整后直方图\’);
运行结果如图所示: