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

一.理论基础
线性灰度变换函数是一个线性函数: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);

三.运行结果:

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

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

你可能感兴趣的:(数字图像处理,点运算,直方图)