2011-10-15 58 views
3

我幾乎整天都在搜索這個。對數變換的一般形式是在matlab中找到圖像的逆對數變換

s = clog(1+r) 

其中

c = 0.1 

相反的是逆對數變換(書)。什麼是逆對數轉換?它是

s = exp(r)

無法正確輸出。非常感謝幫助。謝謝。

回答

4

Exp()只會是Log()的倒數if Log()natural logarithm。如果您的Log()正在使用不同的基座(基座2,基座10,任何其他任意基座),那麼您將需要使用不同的基座代替eExp()

更新

嘗試10^(x/0.1)-1x/0.1撤消0.1 *操作,10^撤消log(),和-1撤消+1

+0

使用10默認基地。 – user461127

+0

+1 *我認爲它更具可讀性,如果你使用'0.1'而不是'.1' * – Amro

+0

@Amro,我認爲你是對的。謝謝。 – sarnold

0

可以使用的功法變換這樣做,因爲在功法變換,你可以移動曲線,以便執行數變換或進行逆數變換其效果高水平的像素,但不低的水平pixels..You可以使用這

a=imread('Figure-3.tif'); 
a=im2double(a); 
[r,c]=size(a); 
gamma=0.6; 
C=1; 
for i=1:r 
for j=1:c 
    s(i,j)=C*(a(i,j)^gamma); 
end 
end 
imshow(s); 
+0

再次回滾您的自我宣傳,非披露,無關鏈接的編輯會導致您的帖子被視爲垃圾郵件。只是一個友好的通知。 –

1

我想你定義c所得到的圖像歸爲一個有效的(可見)範圍內。然後c合理值可以是:

c = (L - 1)/log(L) 

其中L是灰度級的數量。所以s是:

s = log(r+1) .* ((L – 1)/log(L)) 

s = log(r+1) .* c 

然後逆變換是:

s2 = (exp(r) .^ (log(L)/(L-1))) – 1 

s2 = (exp(r) .^ (1/c)) – 1 

這是轉換輸出L=256

enter image description here

這一轉變適用於我們需要做一些類型轉換的圖像:

figure; 
L = 256; 
I = imread('cameraman.tif'); 
log_I = uint8(log(double(I)+1) .* ((L - 1)/log(L))); 
exp_I = uint8((exp(double(I)) .^ (log(L)/(L-1))) - 1); 
subplot(2, 2, [1 2]); imshow(I); title('Input'); 
subplot(2, 2, 3); imshow(log_I); title('\itlog(I)'); 
subplot(2, 2, 4); imshow(exp_I); title('\itexp(I)'); 

enter image description here