数字图像处理

您所在的位置:网站首页 log函数的图像底数越大 数字图像处理

数字图像处理

2024-07-09 21:38| 来源: 网络整理| 查看: 265

本文参考了 以下这篇文章 [数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割  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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3