2014-05-24 4 views
2

퍼지 에지 검출기에서 작업하고 있습니다. 퍼지 화 및 퍼지 화를 적용한 후 이미지의 크기와 동일한 크기의 행렬을가집니다. 하지만이 행렬은 double 데이터 형식이고이 행렬의 값은 0 또는 1입니다.이 행렬을 이진 이미지로 표시하려고합니다. 다음은 rff가 defuzzyfied 행렬 인 곳에서 시도한 코드입니다.데이터 형식 double의 행렬을 이진 이미지로 변환합니다.

>> rff2=uint8(rff); 
>> rff3=im2bw(rff2); 
>> imshow(rff3); 

빈 이미지가 표시됩니다. 그러나 나는 우위의 이미지를 원한다.

답변

0

'uint8'데이터 유형을 사용하면 matlab은 값이 0에서 intmax 사이 여야합니다. 이미지의 검정색과 거의 검정색 인 0과 1 값이 있습니다. 입력 내용이 정확히 무엇인지 알지 못하면 다음과 같이 작동해야합니다.

%some random data, which hopefully matches your datatype 
rff=repmat(randi(2,100,100)-1,[1,1,3]); 
%convert to black and white double 
rff2=im2bw(rff); 
%optional step, we know that rff contains only 0 and 1, convert to logical 
rff3=logical(rff2) 
%display image 
imshow(rff3); 
+0

'imshow (uint8 (255 * rff)) '도 제대로 작동하지 않습니까? 나는 내 앞에 MATLAB이 없기 때문에 Octave를 실행하는 것이별로 행운이 없다. –

+0

@EdS : 0..1 범위의 이중 입력에 적합합니다. 나는 'im2bw'가 정확한 결과를 산출하거나 expeption을 던지기 때문에 내 솔루션을 선호한다. 입력 이미지가 이미 정수형 인 경우 코드가 잘못된 결과를 계산할 것이다. 이런 이유로 필자는 항상 im2 * 함수 중 하나를 사용하여 이미지를 변환합니다. 옥타브에서 작동하지 않는다면 분명히 다른 솔루션을 찾아야합니다. – Daniel

+0

감사합니다. –

관련 문제