数字图像处理之点运算---灰度的线性变换

一.理论基础
线性灰度变换函数是一个线性函数:B=f(A)=aA+c.其中A为输入图像灰度值,B为输出图像灰度,a为线性函数的斜率,c为在Y轴的截距。
当a>1时,输入图像的对比度将增大,当a<1时,输出图像的对比度将减小;
当a=1时且c≠0时,c的变换仅使所有的灰度值上移或者下移,其效果使整个图像更暗或更亮,
当a<0时暗区域将变亮,亮区域将变暗。这种线性变换可能由于像素达到饱和(小于0或者超过255)从而丢失一部分细节;
特殊情况a=1,c=0输入图像和输出图像相同;a=-1,c=255输出图像的灰度正好反转。

二.matlab实现:

%读入原图像
I=imread('coins.png');%读入原图像
I=im2double(I);%转换数据类型为double
[M,N]=size(I);
figure(1);
subplot(2,3,1);
imshow(I);%显示原图像
title('原图像');
%原图像灰度直方图
figure(2);
subplot(2,3,1);
[H,x]=imhist(I,64);%计算64个区间的灰度直方图
stem(x,H/M/N,'.');%显示原图像的直方图
title('原图像','fontsize',8);
%增加对比度
Fa=2;Fb=-55;
O=Fa.*I+Fb/255;
figure(1);
subplot(2,3,2);
imshow(O);
title('Fa=2 Fb=-55 增加对比度','fontsize',8);
figure(2)
subplot(2,3,2);
[H,x]=imhist(O,64);
stem(x,H/M/N,'.');
title('Fa=2 Fb=-55 增加对比度','fontsize',8);
%减小对比度
Fa=0.5;Fb=-55;
O=Fa.*I+Fb/255;
figure(1);
subplot(2,3,3);
imshow(O);
title('Fa=0.5 Fb=-55 减小对比度','fontsize',8);
figure(2)
subplot(2,3,3);
[H,x]=imhist(O,64);
stem(x,H/M/N,'.');
title('Fa=0.5 Fb=-55 减小对比度','fontsize',8);
%线性增加亮度
Fa=1;Fb=55;
O=Fa.*I+Fb/255;
figure(1);
subplot(2,3,4);
imshow(O);
title('Fa=1 Fb=55 线性平移增加亮度','fontsize',8);
figure(2)
subplot(2,3,4);
[H,x]=imhist(O,64);
stem(x,H/M/N,'.');
title('Fa=1 Fb=55 线性平移增加亮度','fontsize',8);
%线性减小亮度
Fa=1;Fb=-55;
O=Fa.*I+Fb/255;
figure(1);
subplot(2,3,5);
imshow(O);
title('Fa=1 Fb=-55 线性平移减小亮度','fontsize',8);
figure(2)
subplot(2,3,5);
[H,x]=imhist(O,64);
stem(x,H/M/N,'.');
title('Fa=1 Fb=55 线性平移减小亮度','fontsize',8);
%反向显示
Fa=-1;Fb=255;
O=Fa.*I+Fb/255;
figure(1);
subplot(2,3,6);
imshow(O);
title('Fa=-1 Fb=255 反向显示','fontsize',8);
figure(2)
subplot(2,3,6);
[H,x]=imhist(O,64);
stem(x,H/M/N,'.');
title('Fa=-1 Fb=255 反向显示','fontsize',8);

三.运行结果:

在这里插入图片描述这幅图结合理论基础发现斜率影响图像的对比度,截距印象图像的亮度,斜率的正负会使灰度反转。
在这里插入图片描述
这副图结合上图我们主要来分析一下从直方图中获得的信息:
灰度值分布集中且只占一小部分则图像对比度低(观察图一3和图二3)
灰度值分布较均匀且值较平均则图像对比度高(观察图一2和图二2)
灰度值分布的峰值位置代表的图像的亮度,越靠右侧图像越亮,反之越暗(对比图一4和5,图二4和5)

四。总结
线性变换斜率影响对比度,截距影响图像的亮度。

猜你喜欢

转载自blog.csdn.net/jxqbuct/article/details/89220287