2013-11-23 2 views
0

나는 이틀 전에 이미지를 블록으로 나누는 방법에 대해 how to segment the image into block에 물었습니다. 그리고 다행히도 저는 친애하는 chappjc님께 서 최고의 답을 얻었습니다.이미지를 블록으로 분할하는 작업이 이미지의 크기에 좌우됩니까?

[m,n] = size(Image); 
numBlocksX = 10; numBlocksY = 10; 
bsX = ceil(n/numBlocksX); bsY = ceil(m/numBlocksY); 
numFullBlocksX = floor(n/bsX); numFullBlocksY = floor(m/bsY); 
xBlocks = [repmat(bsX,numFullBlocksX,1); mod(n,bsX)*ones(mod(n,bsX)>0)]; 
yBlocks = [repmat(bsY,numFullBlocksY,1); mod(m,bsY)*ones(mod(m,bsY)>0)]; 
blockCell = mat2cell(Image,yBlocks,xBlocks); 

내 문제 :

내 이미지는 내가 8 × 8 블록의 수, 또는 10 × 10로 세그먼트에 이미지를하려고 할 때 160 × 160 코드는 잘 작동 크기를 가지고, 또는 12 x 12, ... 등

그러나 이미지를 22x22 블록 수로 분할하려고하면 코드가 작동하지만 이미지가 22x22 대신 21x21로 분할됩니다!

세그먼트 화는 원본 이미지의 크기에 좌우됩니까? 나는 큰 이미지로 작업 할 때, 이미지는 내 문제에 대한 만의 의견이 필요 22 X 22

으로 분할되고 있기 때문에 (분할 이미지의 크기에 따라 달라집니다 경우?)

하세요 도움이 필요해!

+1

코드를 한 줄씩 살펴보고 그 내용을 이해했는지 확인 했습니까? –

+0

근실하게 아니오, 나는 모든 선을 이해하지 못했다 그러나 잘 작동한다 : – Christina

답변

2

어떤 의미에서 세그먼트 화는 원래 이미지의 크기에 따라 달라질 수 있습니다. 원래 이미지의 X 및 Y 크기 중 하나가 MxN으로 완벽하게 나눌 수 없기 때문입니다 (총 블록 수 당신은 결국 갖고 싶습니다).

mod (n, bsX) 또는 mod (m, bsY)가 0이 아닌 경우 어떻게 처리 하시겠습니까? 경계 블록 중 일부가 나머지 크기보다 크기 때문에 괜찮습니까? 그렇지 않은 경우 각 차원의 크기가 블록 수로 완벽하게 나눌 수 있도록 이미지 크기를 변경해야합니다 (모듈로 = 0).

[m,n] = size(image); 
numBlocksY = 13; numBlocksX = 11; 
resized = imresize(image, [ (numBlocksY*ceil(m/numBlocksY)), (numBlocksX*ceil(n/numBlocksY)) ]); 
[o,p] = size(resized) 
mod(o,numBlocksY) 
mod(p,numBlocksX) 

mod 결과는 0입니다. 이제 크기 조정 된 이미지의 크기는 각 치수에서 원하는 분할 수 (블록)로 완벽하게 나눌 수 있습니다. 올바른 매개 변수를 사용하여 크기가 조정 된 이미지에서 mat2cell을 호출하면됩니다. 그러나이 값을 남겨 두겠습니다. 이렇게하면 여전히 MxN 블록을 갖지만 모두 같은 크기가됩니다. 크기는 다음과 같이 계산됩니다.

blockXsize = o/numBlocksY; 
blockYsize = p/numBlocksX; 

정확하게 이러한 크기를 사용하여 mat2cell을 올바르게 호출해야합니다.

+0

당신의 응답을 당신을 감사하십시오! :) ,, désolé "int"가 아닌 "into"입니다. 키보드에서 잘못되었습니다. 이미지를 더 많은 수의 블록으로 분할 할 수있는 코드를 수정하는 방법이 있습니까? – Christina

+2

물론 가능합니다. 그러나 그것은 당신이 성취하고자하는 최종 결과에 달려 있습니다. 각 블록은 같은 크기 여야합니까? 나는 그렇게 생각할 것이다. 이 경우 먼저 이미지의 크기를 조정해야합니다. 그러면 다른 모든 것이 훨씬 쉽습니다. – Falimond

+0

이미지를 더 크게 만들고 더 많은 수의 블록으로 분할 할 수 있도록 원본 이미지의 크기를 조정해야한다는 의미입니까? – Christina

관련 문제