数字图像处理 -灰度变换 之 对数变换(Log Transformation)

本文参考了 以下这篇文章

[数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割 

https://blog.csdn.net/zhoufan900428/article/details/12709361

并进行了一下改进。



以上为上述文章 的原话,这里展示出对数变换的code 和 figure,

Matlab Code:

f = 0:0.01:1;
v1 = 1;
y1 = log2(1 + v1*f)/log2(v1+1); 
v2 = 10;
y2 = log2(1 + v2*f)/log2(v2+1); 
v3 = 50;
y3 = log2(1 + v3*f)/log2(v3+1); 
v4 = 100;
y4 = log2(1 + v4*f)/log2(v4+1); 
v5 = 200;
y5 = log2(1 + v5*f)/log2(v5+1); 
plot(f,y1,'g',f,y2,'r',f,y3,'b',f,y4,'c',f,y5,'y');
xlabel('Input gray level');
ylabel('Output gray level');
title('Log transformation: g = log(1+v*r)/log(1+v)');

lgd = legend('Log(v=1)','Log(v=10)','Log(v=50)','Log(v=100)','Log(v=200)');
legend('Location','southeast');
title(lgd,'The Legend Title')

Figure:


从图中我们可以很直观的看出,由于对数本身上凸的性质,它可以把低灰度(较暗)部分的亮度提高,v 越大,灰度提高越明显,即图像越来越亮。

以下是改进后的对数变换代码,将4个对比图形放在同一张图内,看起来更直观。

f = imread('2.jpg');  
I=rgb2gray(f);
f = mat2gray(I);% 原代码中的[0 255] 可以去掉,因为f中最大最小值等于0, 255

v = 10;  
g_1 = log2(1 + v*f)/log2(v+1);  
  
v = 30;  
g_2 = log2(1 + v*f)/log2(v+1);  
  
v = 200;  
g_3 = log2(1 + v*f)/log2(v+1);  
  
figure(); %这里改成了四个子图,会更加直观  
subplot(2,2,1);  
imshow(f,[0 1]);  
xlabel('a).Original Image');  
subplot(2,2,2);  
imshow(g_1,[0 1]);  
xlabel('b).Log Transformations v=10');  
  
subplot(2,2,3);  
imshow(g_2,[0 1]);  
xlabel('c).Log Transformations v=100');  
  
subplot(2,2,4);  
imshow(g_3,[0 1]);  
xlabel('d).Log Transformations v=200');  

figure:


再次感谢 这篇文章在学习这部分内容时提供的帮助。https://blog.csdn.net/zhoufan900428/article/details/12709361



  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值