2013-07-24 10 views
3

이미지 주위에 흰색 테두리가있는 이미지가 있으며 테두리를 제거해야합니다. 이미지 위에 흰색 픽셀 20 행, 왼쪽에 흰색 5 열, 오른쪽에 흰색 열 5 개, 이미지 아래에 흰색 5 행이 있습니다. 그 경계에서 정확하게 이미지를 자르지 않을 것입니다, 어떻게 이것을 MATLAB에서 할 수 있습니까? 당신이 줄 수있는 도움을 주셔서 감사합니다! MATLAB에서 픽셀의 행과 열을 자르는 방법

당신이 이미지 프로세싱이있는 경우

답변

4

내장 된 MATLAB 함수 imcrop이 필요합니다. 사용하려면

B = imcrop(A,[xmin ymin width height]); 

과 같이 지정하십시오. A가 원본 이미지 인 경우. 먼저 이미지의 크기를 찾습니다. 800에서 600을 말하십시오. 그러면 위의 함수에서 너비와 높이가 각각 780 x 580 이미지로 자르기를 원합니다. 당신의 x와 y는 각각 5와 20과 같을 것입니다.

+0

시도해 보았지만 작동하지 않았습니다 .128x1500이어야합니다.), 나는 153x1510x3 행렬입니다. 당신이 말하는 것은 옳은 것처럼 보이지만, "??? ??? ==> imcrop> checkCData using 잘못된 입력 이미지와 같은 오류가 있습니다." – Acoustic77

+0

ok 나는했다. B = imcrop (I, [5 20 128 1500]) 그리고 B는 <134x129x3> 행렬로 반환됩니다. – Acoustic77

+0

B = imcrop (I, [6 21 1500 128])은 나를 <129x1501x3>으로 가져오고 마지막 행과 열을 제거 할 수 없습니다. 이견있는 사람? – Acoustic77

2

U 이것에 대한 imcrop을 사용할 수 있습니다 (이미지가 나는 이것에 대한 온라인 서비스를 사용할 수없는 이유입니다 TIFF,, 그들은 나에게 티파니 업로드하지 않습니다) 도구 상자 또는 다음과 같이 새 이미지를 만들 수 있습니다

I2 = I(21:end-5, 6:end-5) 

3 차원, 당신은 사용할 수 있습니다

I2 = I(21:end-5,6:end-5,:) 

의견에 따라 예를 들어 :

I = rand(153,1510,3); 
size(I); % 153  1510   3 
I2 = I(21:end-5,6:end-5,:); 
size(I2); % 128  1500   3 
+0

나는 이것을 시도했지만 오류가 발생했습니다. 나는 이미지 프로세싱 툴박스를 사용했으나 충분히 정밀하지 못했습니다 (아래쪽에 하나의 흰색 라인 픽셀을 남겨 두었습니다.) I = imread (pic)하고 이제는 <153x1510x3> 행렬입니다. "end-5"라고 말하면, 끝 부분에서 20 줄, 아래쪽에서 5 줄, 양 끝에서 5 줄을 잘라서 153x1510 픽셀의 사진을 128x1500 픽셀 중 하나로 변환해야합니다. – Acoustic77

+0

@ Acoustic77 계정에 대한 anwser를 업데이트했습니다. 3 차원 용 – Marcin

+0

'imcrop'을 사용하면이 작업을 수행 할 필요가 없습니다 – voxeloctree

0
newIm = oldIm(20:length(oldIm(:,1))-5,5:length(oldIm(1,:))-5) 
+0

newIm을 <129x4521>으로 반환하고 색 구성표가 너무 왜곡됩니다. – Acoustic77

+0

그것은 당신이 컬러 이미지이기 때문에; user2613077 대답은 회색조 답변에 적합합니다. Marcin이 적용된 동일한 수정 사항도 여기에서 적용됩니다. – facuq