2016-11-27 1 views
1

ii = cumsum(cumsum(image, 2), 1)을 사용하여 주어진 이미지의 적분 이미지를 계산했습니다. 나의 교과 과정에서, 질문은 대부분의 값이 255보다 커질 것이고 나는 밝은 이미지를 얻을 것이기 때문에 나를 정말로 혼란스럽게하는 정규화 된 Integral Image를 그릴 것을 요청했다. 그렇다면 정규화 된 Integral Image를 플로팅하는 방법은 무엇입니까?정규화 된 적분 이미지

+0

시도한 것을 보여줄 수 있습니까? – rapvelopment

+0

그래서 내 대답이 도움이 되었습니까? – rayryeng

답변

0

이미지를 표준화하면됩니다.

작업이 먼저 [0,1]의 범위 내에서 정상화하고 있다고 가정

는, 당신은 확장

ii_norm = 255*(ii - min(ii(:)))/(max(ii(:)) - min(ii(:))); 
[0,255]에 : 255 - 그것은 당신이 MATLAB을 사용하는 것처럼, 그래서 그냥 0 사이의 값을 정규화 새로운 이미지를 만들어 본다 후. 당신은 이미지로이를 표시 할 때문에, uint8으로이 캐스팅하는 것을 잊지 마세요 :

ii_norm = uint8(ii_norm); 

그러나, 당신은 그들이 어쨌든 상기 범위에 적합하도록 자동으로 값을 확장 할 수 imagesc를 사용할 수 있습니다. 그러나 imagesc은 고유 한 색상으로 강도를 표시하는 색상 맵을 사용하여 이미지를 표시합니다. 실제 강도 값을 직접 표시하고 싶다면 colormap으로 전화를 걸어 gray으로 설정해야합니다. 또한 imshow을 사용하여 두 번째 매개 변수를 공백으로 설정하면이 배율 조정에 도움이됩니다. imshow(ii, []); ... 사실 크기를 조정할 필요가 없습니다. 이미지를 파일에 쓰고 싶다면

imagesc(ii); colormap('gray'); 
% or 
%imshow(ii,[]); 

을 ... 그리고 위의 자동 부동 소수점의 경우 [0,255] 또는 [0,1]의 범위에 이미지 크기를 조정합니다

그냥 단순히 않습니다.

왼쪽 상단이 0이거나 0에 가까울수록 증가하는 그래디언트가있는 이미지가 예상되며 오른쪽 하단으로 가면 이미지의 밝기가 완전히 흰색으로 바뀌기 시작합니다 이미지의 오른쪽 하단 가까이로 접근하면 통합 이미지는 이미지의 왼쪽 상단부터 공간 좌표 (x,y)까지의 영역을 계산합니다.

또한, 이미지의 크기에 따라 적분 이미지 값은 매우 빠르게 채울 수 있습니다, 그래서뿐만 아니라 로그 정규화 된 강도 이미지를 표시하는 것이 유용 할 수 있습니다 :

imagesc(log(1 + ii)); colormap('gray'); 
% or 
imshow(log(1 + ii), []); 

이 줄 것이다 왼쪽 상단에서 오른쪽 하단까지 스윕 할 때 강도를 더 균등하게 분산시킵니다.