数字图像处理实验01——直方图

数字图像处理实验01

直方图

仅供学习


1.对实验图像RGB.jpg 进行彩色图像到灰度图像的转化,绘制其直方图,并选取合适的阈值将灰度图像转化为二值图像。
步骤
1)用下列函数将它们转换成不同灰度级的图像,

I=imread(‘<图像名>.<文件后缀>’); %打开的一般是彩色图像
Ig=rgb2gray(I); %将彩色图像转化为灰度图像

2)绘制图像

figure;imshow(Ig); %在新窗口中绘制图像

3)绘制直方图

figure;imhist(Ig); %在新窗口中绘制Ig的直方图
如果要在同一窗口中绘制图像和它的直方图,用下面的方式:

subplot(2,1,1); imshow(Ig);
%subplot指明窗口绘图区划分为2行1列的区域,第三个参数1规定紧接着后面的绘图结果在第1个区域中显示

subplot(2,1,2); imhist(Ig); %在第2个区域显示直方图

4)根据直方图,分析图像的亮度和对比度。对感兴趣的物体,分析它的灰度值范围,确定划分二值图像的域值。用下面的函数生成二值图:

bw=im2bw(Ig,<阈值>/<灰度级数>); %灰度级是指可取灰度值的数目,如256,

代码如下

>> I=imread('Light.jpg');
>> Ig=rgb2gray(I);
>> figure;imshow(Ig);
>> subplot(2,1,1);imshow(Ig);
>> subplot(2,1,2);imhist(Ig);
>> bw=im2bw(Ig,graythresh(Ig));
>> figure;imshow(bw);
>> figure;imhist(bw);
>> subplot(2,1,1);imshow(bw);
>> subplot(2,1,2);imhist(bw);

2.利用histeq函数对对比度不同的2幅图像(dark.jpg和low_contrast.jpg)进行直方图均衡化。对比直方图均衡化后两幅图像的效果,及其直方图的变化,并分析原因。

>> da=imread('dark.jpg');
>> dag=histeq(da);
>> subplot(2,2,1);imshow(da);
>> subplot(2,2,2);imhist(da);
>> subplot(2,2,3);imshow(dag);
>> subplot(2,2,4);imhist(dag);
>> lo=imread('low_contrast.jpg');
>> log=histeq(lo);
>> subplot(2,2,1);imshow(lo);
>> subplot(2,2,2);imhist(lo);
>> subplot(2,2,3);imshow(log);
>> subplot(2,2,4);imhist(log);

对比

直方图均衡化的基本思想就是把原始图像的直方图变换为均匀分布的形式,从而增加灰度的动态范围,达到增强图像对比度的效果。

由于dark.jpg和low_contrast.jpg的不同在于low_contrast.jpg的图像对比度较低,其灰度直方图大部分分布在90-140左右,动态范围较窄,而dark.jpg的亮度较低,其灰度直方图大部分分布在20-90,可能是成像过程中曝光不足导致。

由于灰度分布的动态范围越大,图像越清晰,直方图均衡化对于对比度较弱的图像来说增强效果更加明显,直方图均衡化后的灰度级间隔增加,增加图像的对比度,使图像有较大反差。

低亮度图的均匀化后的直方图可以看出灰度比较均匀,各等级的灰度都有呈现,而低对比图均匀化后的直方图可以看出大多数像素由一些代表性的灰度等级所呈现。


别忘了点赞支持!!!呜呜~

你可能感兴趣的:(数字图像处理,matlab)