【数字图像处理】Matlab实现-图像增强-灰度图像增强
灰度图像增强的大致原理以及操作方法
面向作业编程
上图是大概对灰度图的增强处理
就是想让图片变得更好看
那么如何具体操作就看下面的代码了
这是一个简单的线性分段处理,相信在注释的帮助下应该能看懂。
%返回行数列数
[h,w]=size(gray);
[m,n]=size(gray);
%创建一个0矩阵
NewImage1=zeros(h,w);
%变参数图像
NewImage1_1=zeros(m,n);
%原图进行处理 分段线性变换
a=80/256; b=180/256; c=30/256; d=220/256;
for x=1:w
for y=1:h
if gray(y,x)<a
NewImage1(y,x)=gray(y,x)*c/a;
elseif gray(y,x)<b
NewImage1(y,x)=(gray(y,x)-a)*(d-c)/(b-a)+c;
else
NewImage1(y,x)=(gray(y,x)-b)*(255-d)/(255-b)+d;
end
end
end
基于直方图
每个灰度图片可以看作很多像素点的集合,而每一个像素点的值就是对应的灰度值。
将所有的灰度值统计起来可以得到一个灰度值/频率的直方图
如下
然后你可以对其进行处理
NewImage2=histeq(gray); %0-10均匀分布 NewImage2_2=histeq(gray,10); %0-2均匀分布 NewImage2_1=histeq(gray,2); imhist(NewImage2); imhist(NewImage2_1); imhist(NewImage2_2); figure,imshow(NewImage2),title('直方图均衡化'); figure,imshow(NewImage2_1),title('改变均衡化参数'); figure,imshow(NewImage2_2),title('改变均衡化参数');
对于后面的伪彩色增强请看下一篇