您的位置:首页 > 其它

(一)数字图像的基本操作和灰度变换

2018-09-09 00:27 253 查看

1,图像灰度的线性变换

灰度的线性变换可以突出图像中的重要信息。通常情况下,处理前后的图像灰度级是相同的,即处理前后的图像灰度级都为[0,255]。那么,从原理上讲,我们就只能通过抑制非重要信息的对比度来腾出空间给重要信息进行对比度展宽。

设原图像的灰度为f(i,j),处理后的图像的灰度为g(i,j),对比度线性展宽的原理示意图如上图所示。假设原图像中我们关心的景物的灰度分布在[fa,fb]区间内,处理后的图像中,我们关心的景物的灰度分布在[ga,gb]区间内。在这里△g=(ga-gb)>△f=(fb-fa),也就是说我们所关心的景物的灰度级得到了展宽。根据图中所示的映射关系中分段直线的斜率我们可以得出线性对比度展宽的计算公式:

2,直方图均衡化

直方图均衡化是将原始图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。 

离散图像均衡化处理可通过变换函数:      来实现。

3,图像灰度线性变换的实现

3.1,读入一幅灰度图像test1.jpg,显示其灰度直方图

[code]clc;
clear;
close all;

I = imread('test1.jpg','jpg');       %自己设置路径
subplot(1,2,1);
imshow(I);
title('原图');
subplot(1,2,2);
imhist(I);
title('原图直方图');

3.2,根据图像灰度直方图,选择所关心的图像景物的灰度分布范围[fa,fb],以及拟变换的灰度分布范围[ga,gb]

①确定灰度变换范围为fa=100,fb=150,ga=50,gb=200,则线性变换结果如下:

[code]clc;
clear;
close all;

%①fa=100;fb=150;ga=50;gb=200;
I=imread('test1.jpg','jpg');            %自己设置路径
subplot(1,2,1);
imshow(I);
fa=100;
fb=150;
ga=50;
gb=200;
a=ga/fa;
b=(gb-ga)/(fb-fa);
c=(255-gb)/(255-fb);
[M,N]=size(I);
for i=1:M
for j=1:N
if I(i,j)<=fa
I(i,j)=a*I(i,j);
else if I(i,j)<=fb
I(i,j)=b*(I(i,j)-fa)+ga;
else I(i,j)=c*(I(i,j)-fb)+gb;
end
end
end
end
subplot(1,2,1);
imshow(I);
title('test1变换后');
subplot(1,2,2);
imhist(I);
title('test1变换后灰度直方图');

由此可以看出,将图像灰度在100到150之间的部分进行灰度拉伸,其他部分灰度压缩,图像整体变暗了,但因为拉伸的灰度值处于中间部分,所以效果不明显。

② 确定灰度变换范围为fa=30,fb=50,ga=30,gb=200,则线性变换结果如下:

[code]clc;
clear;
close all;

%fa=30;fb=50;ga=30;gb=200;
I=imread('test1.jpg','jpg');        %自己设置路径
fa=30;
fb=50;
ga=30;
gb=200;
a=ga/fa;
b=(gb-ga)/(fb-fa);
c=(255-gb)/(255-fb);
[M,N]=size(I);
for i=1:M
for j=1:N
if I(i,j)<=fa
I(i,j)=a*I(i,j);
else if I(i,j)<=fb
I(i,j)=b*(I(i,j)-fa)+ga;
else I(i,j)=c*(I(i,j)-fb)+gb;
end
end
end
end
subplot(1,2,1);
imshow(I);
title('test1变换后');
subplot(1,2,2);
imhist(I);
title('test1变换后灰度直方图');

将灰度值处于30至50之间的部分进行拉伸,其他部分压缩,图像变换效果比较明显。30至50位于直方图低灰度值部分,所以图像变亮。

4,读入一幅灰度图像test2.jpg求出其直方图,利用Matlab函数实现图像的均衡化处理

[code]clc;
clear;
close all;

I=imread('test2.jpg','jpg');        %自己设置路径
subplot(2,2,1);
imshow(I);
title('test2原始图像');
subplot(2,2,2);
imhist(I);
title('test2灰度直方图');
G=histeq(I);
subplot(2,2,3);
imshow(G);
title('test2均衡化图像');
subplot(2,2,4);
imhist(G);
title('test2均衡化后的直方图');

 

附上实验原图

​​​​​​​

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: