数字图像与视频处理
第三次作业
姓名:张心怡 班级:自动化66 学号:2160504141 提交日期:2019.3.18
摘要
第三次作业主要完成了对图像的直方图处理,选用了MATLAB进行处理。任务一用imhist()函数计算直方图,用bar()画直方图;任务二用J=histeq(I,n)函数进行直方图均衡;任务三将待匹配的图像与标准图像分别求直方图和累计频率,将原始图中的各累积频率匹配到标准图中最接近的累积频率上去;任务四建立一个7*7矩阵作为模板,对原图像进行扩展,然后每个像素点对齐相乘,用histeq函数进行直方图均衡,将均衡后中心点的像素值赋给原图对应点的元素;任务五计算出灰度均值,对每个灰度,分别计算出其目标概率、背景概率、目标的平均灰度值、背景的平均灰度值,找到方差的最大值及其对应的灰度,将其作为图像分割的阈值。
题目要求:
1.把附件图像的直方图画出;
2.把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;
3.进一步把图像按照对源图像直方图的观察,各自自行指定不同源图像的直方图,进行直方图匹配,进行图像增强;
4.对elain和lena图像进行7*7的局部直方图增强;
5.利用直方图对图像elain和woman进行分割;
题目分析:
Step1:画出附件图像的直方图
首先要读入图片,给出的为indexed即图像是索引图像。在Matlab函数库中可查找到indexed图像到gray图像的转换函数。如下:I=ind2gray(X,map);
x,map两个参数值无法确定,无法进行灰度转换。我们在使用imread函数加载图片时可使用如下方式进行加载:
[X,map]=imread('filename');
再运用MATLAB中自带的绘制灰度直方图的函数
hist_im=imhist(citywall); %计算直方图
bar(hist_im);%画直方图
即可画出citywall图像的灰度直方图,横坐标为灰度[0,255],纵坐标为每个灰度级对应的像素总数。
Step2:对图像进行直方图均衡化处理。
先利用累计分布函数对原图像的统计直方图做变换,得到新的图像灰度。
再进行近似处理,将新灰度代替旧灰度,同时将灰度值相等或相近的每个灰度直方图合并在一起。
MATLAB实现直方图均衡化处理的函数是:J=histeq(I,n):I为输入的原图像,J为直方图均衡化后得到的图像,n为均衡化后的灰度级数,这里使用默认值64。
Step3:将图像(带数字标号的)与源图像(不带数字标号的)进行直方图匹配。
首先将带匹配的图像与标准图像读入,分别求直方图,计算累计频率。MATLAB中求累计频率的函数形如:
startdard_value = cumsum(standard_hist)';
然后,将原始图中的各累积频率匹配到标准图中最接近的累积频率上去,用标准图直方图累积频率同时减去原始图中一个累积频率。
找到原始图中累积频率最接近标准图的累积频率的值和下标,并将下标i存到矩阵index中即index(i)。
构造一个与源图像大小相同的空矩阵pipei,用index()对原始图中的每个像素点进行匹配,并转为uint8型。
最后显示三个图像。
Step4:建立一个7*7矩阵作为模板,因为要将模板中心与原图像每个像素点进行对齐,所以先对原图像进行扩展,然后每个像素点对齐相乘,用histeq函数进行直方图均衡。
将均衡后中心点的像素值赋给原图对应点的元素,未被赋值的元素取原值。遍历一遍后即得到局部增强的图像。
Step5:首先将图像转化为double型,计算出直方图并归一化。
然后计算出灰度均值,对每个灰度,分别计算出其目标概率、背景概率、目标的平均灰度值、背景的平均灰度值,计算出方差。
遍历后找到方差的最大值及其对应的灰度,将其作为图像分割的阈值,灰度大于阈值的为目标,小于阈值的为背景。
处理结果:
1.14张图片的灰度直方图

改善内容:可以增强图像的对比度,直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。均衡后的图像灰度更加均匀了。
3.图像匹配到标准图
4.图像局部直方图增强
5.图像直方图分割
参考文献:
[1] https://blog.csdn.net/ibelievesunshine/article/details/79961027
[2] https://blog.csdn.net/chaolei3/article/details/79734684
[3] https://blog.csdn.net/chenlong_Ethen/article/details/74831208