2011-10-15 2 views

답변

4

Exp()Log()의 역수 것이다. Log()이 다른 기준 (2 기준, 10 기준, 기타 임의 기준)을 사용하는 경우 e 대신 Exp()에 다른 기준을 사용해야합니다.

업데이트

10^(x/0.1)-1을보십시오. x/0.10.1 * 작업을 실행 취소하면 10^log()을 실행 취소하고 -1+1을 실행 취소합니다.

+0

(10)의 기본베이스를 사용하여. – user461127

+0

+1 *'.1' 대신'0.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에 대한 합리적인 값은 수 : L는 그레이 레벨의 수입니다

c = (L - 1)/log(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 

가대한 변환 출력:

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

관련 문제