如何在matlab中计算图像的log10以及图像的log10是什么意思? 和图像是灰度。 例如:
α= imread(' image.jpg的&#39);
im2bw(一,日志10);
我想知道log10如何影响图像?
答案 0 :(得分:1)
假设您有一个灰度图像。我们使用matlab提供的cameraman.tif
图片。
Img = imread ('cameraman.tif');
此图像是uint8图像(即它可以采用0-255范围内的可能强度值),但实际上此特定图像的最小强度值为7,最大值为253.这有助于演示效果对数,因为没有值0(这将导致对数输出中的'减无穷')。
因此,为了证明当取对数时强度发生了什么,让我们首先从最小值到最大值采用线性范围的强度,以及该范围的对数。
Range = double (min (Img(:)) : max (Img(:)));
LogRange = log10 (Range);
现在让我们在[0,1]区间内对两者进行标准化并绘制范围。
NormalisedRange = mat2gray (Range);
NormalisedLogRange = mat2gray (LogRange);
subplot (1, 2, 1); plot (NormalisedRange); axis tight square; title ('Normalised intensity values');
subplot (1, 2, 2); plot (NormalisedLogRange); axis tight square; title ('Normalised Log of intensity values');
因此,如果你应用对数变换,你可以向上移动强度,即你使像素更亮;转换前像素越暗,效果越大。
让我们看看它如何看待实际图像及其对数变换(均标准化为[0,1]范围,如上所述)。 我们还将检查每个图像的直方图,即[0,1]范围内每个强度值的频率。
LogImg = log10 (double (Img));
NormalisedImg = mat2gray (Img);
NormalisedLogImg = mat2gray (LogImg);
subplot (2, 2, 1); imshow (NormalisedImg, [0, 1]); axis image off; title ('Normalised Image');
subplot (2, 2, 2); imshow (NormalisedLogImg, [0, 1]); axis image off; title ('Normalised LogImage');
subplot (2, 2, 3); imhist (NormalisedImg);
subplot (2, 2, 4); imhist (NormalisedLogImg);
你可以看到转换的效果一直是“照亮”画面,特别是,它特别改善了之前较暗区域的对比度(例如,男人的特征现在更加清晰)。
显然,缺点是对比度在“明亮”区域已经恶化,因为之前较暗的像素现在与较亮的像素紧密相连(例如,现在建筑物和天际线之间的区别不太明显)。
您还可以从直方图中确认强度分布已经大幅度转向更亮的值。