2016-07-20 6 views
0

그레이 스케일 이미지 (uint16)를 흑백 이미지로 변환하려고합니다. 이미지 I 다음그레이 스케일 이미지를 BW 이미지로 변환

[level, ] = graythresh(I); 
I_bw  = im2bw(I, level); 

는 : 수준이 동일 enter image description here

하는 것으로 : enter image description here

나는 이미지 I_bw 결과는 다음과 같이 가능성이 이해가 안 돼요 graythresh (I)을 호출 한 후 0으로 설정하십시오.

편집 : 원본 이미지가 포함 된 .mat 파일을 업로드했습니다. file

+0

가 있습니까 올바른 '나'를 사용하고 있다는 것을 확신합니까? 당신이 제공 한 이미지를 사용하여 나는 '0.5137'의 레벨을 얻습니다 :'I = imread ('http://i.stack.imgur.com/Vch35.jpg '); level = graythresh (I); im2bw (I, 수준); ' – Suever

+0

나는 확실하다. 원시 버전이 아닌 .JPG 버전을 업로드했습니다. .fig 파일을 업로드 할 수 있습니까? – Alessandro

+0

그렇다면 어떻게 테스트 할 수 있습니까? 함께 작업하는 이미지를 업로드하십시오. – Suever

답변

1

이유는 : 다음 코드 레벨의 작동 = 0

load Image.mat 

I = z; 
figure;imshow(I, []); 

[level, ] = graythresh(I); %level = 0 
I_bw  = im2bw(I, level); 
figure;imshow(I_bw);impixelinfo 

:
doubleI로 변환하고,이 범위로 정상화 [0, 1].

load Image.mat 

I = z; 
figure;imshow(I, []); 

I = double(I)/double(max(I(:))); %Convert to double, and divide by maximum value - set range to [0, 1]. 

[level, ] = graythresh(I); 

I_bw  = im2bw(I, level); 
figure;imshow(I_bw);impixelinfo 

결과 : 다음 코드뿐만 아니라 작동
enter image description here

:

load Image.mat 

I = z; 
figure;imshow(I, []); 

I = double(I)/double(max(I(:))); %Convert to double, and divide by maximum value - set range to [0, 1]. 
I = uint16(I*2^16-1); %Expand range to [0, 2^16-1] and convert to uint16. 

[level, ] = graythresh(I); 

I_bw  = im2bw(I, level); 
figure;imshow(I_bw);impixelinfo 

원래 코드 레벨 = 0, 더 조사가 필요 이유를 이해 ...

+0

@Alessandro 답변을 업데이트했지만 수준 = 0 인 이유를 여전히 모릅니다. – Rotem

+0

정답입니다. 감사합니다! – Alessandro

관련 문제