2012-05-18 3 views
-2

'binary3.tiff'라는 이미지가 있습니다.Matlab : 왜 입력이 잘못 되었습니까?

This is my image

I 나는 질문 : "을 다음과 같은 기능 (FUNC라고 함) 이미지가 두 배의 행렬로 주어진 그 이미지 1에서 객체와 0 (검은 색)을 나타내는 배경을 나타냅니다에서.."

입력은 어떻게해야합니까? 시도 :

img = imread('binary3.tiff'); 
img2 = double(img)/255; 
newimg = func(img2); 

하지만 작동하지 않습니다.

도와주세요. func가하는 당신이지고있는 오류의 성격, 나는 많이 당신을 도울 수 있지만, 대신에이 작업을 수행 할 수있는 작업에 대한 자세한 내용은없이

+5

"작동하지 않는다"는 것은 무엇을 의미합니까? 어떤 일이 일어나기를 기대하고 어떤 일이 일어나는지 구체적으로 말하십시오. – Attila

+2

'img'의 값은 무엇입니까? 'img2'의 값은 무엇입니까? –

답변

2

:

img2 = double(img > 0); 

은 보장하기 위해 그 값 입력 이미지는 바이너리이며, 한 번 더 해준다. 0 대신에 "백그라운드"로 간주되는 임계 값을 아래에 넣을 수 있습니다.

2

imread는 tiff 이미지가 RGB 색상 공간 대신 ​​CMYK 색상 공간을 사용한다고 가정하기 때문에 img=imread('image.tiff')은 thrid 차원의 크기가 3 대신 4 인 매트릭스로 만듭니다. 함수가 img에서 제대로 작동하지 않습니다. 예를 들어 image(img)이 오류를 발생시키는 경우 이는 입력을 잘못된 것으로 해석하는 이유 일 수 있습니다.

img=imread('image.tiff')의 형식은 uint8입니다. 즉, 모든 값이 0에서 255 사이의 정수인 것을 의미합니다. 0과 1 사이의 값을 두 배로 변환하려면 img2=double(img)/255을 스칼라로 나누는 것이 정확합니다. 각 요소를 그 스칼라로 나누는 것과 같습니다.

마지막으로, 이미지가 RGB 색상 공간에 있다고 확신하는 경우 img=imread('image.tif')을 수행 한 다음 img=img(:,:,1:3)을 수행하여 매트릭스의 4 번째 색상 층을 버리고 이미지가 실제로 RGB 인 경우 image(img)이 정상적으로 작동합니다.

관련 문제