我幾乎整天都在搜索這個。對數變換的一般形式是在matlab中找到圖像的逆對數變換
s = clog(1+r)
其中
c = 0.1
相反的是逆對數變換(書)。什麼是逆對數轉換?它是
s = exp(r)
?
無法正確輸出。非常感謝幫助。謝謝。
我幾乎整天都在搜索這個。對數變換的一般形式是在matlab中找到圖像的逆對數變換
s = clog(1+r)
其中
c = 0.1
相反的是逆對數變換(書)。什麼是逆對數轉換?它是
s = exp(r)
?
無法正確輸出。非常感謝幫助。謝謝。
Exp()
只會是Log()
的倒數if Log()
是natural logarithm。如果您的Log()
正在使用不同的基座(基座2,基座10,任何其他任意基座),那麼您將需要使用不同的基座代替e
的Exp()
。
更新
嘗試10^(x/0.1)-1
。 x/0.1
撤消0.1 *
操作,10^
撤消log()
,和-1
撤消+1
。
可以使用的功法變換這樣做,因爲在功法變換,你可以移動曲線,以便執行數變換或進行逆數變換其效果高水平的像素,但不低的水平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);
再次回滾您的自我宣傳,非披露,無關鏈接的編輯會導致您的帖子被視爲垃圾郵件。只是一個友好的通知。 –
我想你定義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
:
這一轉變適用於我們需要做一些類型轉換的圖像:
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)');
使用10默認基地。 – user461127
+1 *我認爲它更具可讀性,如果你使用'0.1'而不是'.1' * – Amro
@Amro,我認爲你是對的。謝謝。 – sarnold