2017-11-30 6 views
1

나는 확률 분포를 나타내는 그레이 스케일 이미지를 가지고있다. 즉, 값의 합이 1입니다. 원래의 확률 값을 변경하지 않고 이미지의 크기를 줄이고 싶습니다.원래 값을 유지하는 matlab에서 이미지의 크기 조정

previous post에 제안 된대로 가장 가까운 이웃 보간법 (아래 코드 참조)을 사용하여 imresize를 적용하려고 시도했지만 값이 변경되었습니다. 사실, 그들은 제로 아웃. 그것을 성취 할 수있는 다른 방법이 있습니까?

> unique(prob_map) % a grey-scale image representing a pdf 
ans = 
    0 
0.4231 
0.5769 
> sum(ans) 
1 
> I = imresize(prob_map, [192,256], 'nearest'); 
> unique(I) 
0 

답변

1

픽셀의 일부를 버리고 있습니다. 기본적으로 이미지를 서브 샘플링합니다. 방금 불행 해지고 0이 아닌 모든 것을 버리 셨습니다.

올바른 방법은 픽셀 그룹을 함께 묶어 값을 더하는 것입니다. 리샘플링이나 보간에서는이 작업을 수행 할 수 없습니다.

하나의 간단한 방법은 N 연속 열을 한 후, N 연속 행을 추가까지 추가하는 것입니다 :

A; % your input 
B = reshape(A,N,size(A,1)/N,[]); 
B = squeeze(sum(B,1))'; 
B = reshape(B,N,size(B,1)/N,[]); 
B = squeeze(sum(B,1))'; 

이 확률의 합 개별 값을 보존하지만 보존되지 않습니다 무엇 :

sum(A(:)) == sum(B(:)) 

이것은 아마도 내가 한 일일 것입니다. 이 당신은 패드 수 N.에 의해 균등하게 분할의 크기가 제로와 입력 그래서 그것을 만들 것을 요구 않습니다

참고 : 그런데

A = padarray(A, ceil(size(A)/N)*N-size(A), 0, 'post'); 
+0

, 나는 어떻게 든 당신은 MATLAB을 사용하고 가정한다. 내 생각에 '상상하다'고 생각합니다. 그렇다면 질문에 MATLAB 태그를 추가 할 수 있습니다. –