如何計算matlab中圖像的log10值和圖像的平均值log10? 和圖像是graylevel。 例如:在matlab中計算圖像的log10
a = imread('image.jpg');
im2bw(a,log10);
我想知道log10如何影響圖像?
如何計算matlab中圖像的log10值和圖像的平均值log10? 和圖像是graylevel。 例如:在matlab中計算圖像的log10
a = imread('image.jpg');
im2bw(a,log10);
我想知道log10如何影響圖像?
假設你有一個灰度圖像。我們使用由matlab提供的cameraman.tif
圖像。
Img = imread ('cameraman.tif');
此圖像是UINT8圖像(即,它可以在0-255範圍的可能的強度值),但實際上該特定圖像具有7:3的最小強度值和最大的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);
你可以看到轉換的效果一直以「亮」的圖片上來,特別是,它特別改善了以前較暗區域的對比度(例如,男人的功能現在更清晰)。因爲先前較暗的像素現在與較亮的像素相距較近(例如,建築物和天際線之間的區別現在不那麼明顯),因爲顯然,「明亮」區域的對比度已經惡化。
您還可以從直方圖中確認強度分佈已經在很大程度上向較亮的值轉移。
如果你不能定義圖像的log10意味着什麼,你爲什麼要這樣做? – MooseBoys
你想達到的最終目標是什麼? – mpaskov
範例:'I = imread('cameraman.tif'); I = im2double(I); J = log10(I); imshow(J,[])''。圖像較亮(僅在線性拉伸後)和[「對數」](http://homepages.inf.ed.ac.uk/rbf/HIPR2/pixlog.htm)。 J的實際值爲負值。 – Rotem