2013-10-19 10 views
0

그래서 내 컴퓨터가 너무 강하지 않습니다. 전체 특정 영화의 모든 픽셀의 중앙값을 생성하고 싶습니다. 메모리에서 일련의 프레임을 처리 할 수 ​​있었지만 매회 더 많은 프레임을 읽을 때 어떻게해야하는지 잘 모르겠습니다 ... 어떻게 평균 무게를 부여합니까? (나는 100 프레임마다 읽어 줄 테니하지만 중간이 * 100 * 번 내가 + 100 * 현재 이미지 읽기 .. 현재 평균에 따라 업데이트 할 수있다처럼) 이 코드가 있습니다Matlab은 전체 영화에서 중간 값을 생성합니다 (메모리 문제는 피하십시오).

mov = VideoReader('MVI_3478.MOV'); 
seq = read(mov, [1 frames]); 
% create background 
channels = size(seq, 3); 
height = size(seq,1); 
width = size(seq,2); 
BG = zeros(height, width, channels, 'uint8'); 
for c = 1:channels 
    for y = 1:height 
     for x = 1:width 
      BG(y,x,c) = median(seq(y,x,c,:)); 
     end 
    end 
end 

및 나의 질문은 모든 것 위에 또 하나의 루프를 더할 것이라는 점을 감안할 때, 평균 체중을주는 방법은 무엇입니까?

감사합니다.

답변

0

이렇게 중간 값을 계산할 가능성은 없습니다. 필요한 정보가 손실됩니다.

예 : 중간 다른 경우 하나의 케이스 3 및 4 동안

median([1,2,3,4,5,6,7]) is 4 
median([1,2,3,3,5,6,7]) is 3 
median([1,2,3])=2 
median([4,5,6,7])=5 
median([3,5,6,7])=5 

따라서 두 서브 대해이 부분 결과 2, 5 얻는다.

smaller=0 
larger=0 
equal=0 
el=numel(s) 
while(smaller>=el/2||larger>el/2||equal==0) 
    guess=.. 
    smaller=0 
    larger=0 
    equal=0 
    for c = 1:channels 
     for y = 1:height 
      for x = 1:width 
       s=seq(y,x,c,:) 
       smaller=smaller+numel(s(s<guess); 
       larger=larger+numel(s(s>guess); 
       equal=equal+numel(s(s=guess); 
      end 
     end 
    end 
end 

이 코드가 완료되어야 만 스케치입니다 : 내가 볼

유일한 가능성은 일부 이진 검색 방법입니다. 추측은 몇 가지 이진 검색 전략으로 채워 져야합니다.

0

많은 수의 프레임의 경우 중간 값이 전역 순서 통계이고 구조가 없으므로 프로그레시브 방식으로 중앙값을 계산하는 것이 문제가 될 수 있습니다. 고전적인 방법은 회색 음영 8 비트 값 (256)으로 작업한다는 사실을 사용하는 것입니다. 따라서 임의의 픽셀 p (x, y, n)에 대해 n 개의 값을 계산하는 각 빈 (n 개의 프레임이 있음)을 갖는 256 개의 빈을 갖는 히스토그램을 유지할 필요가있다.

value = p(x,y,i); %for the ith frame 
H(x,y,value) = H(x,y,value) + 1; %updating your histogram, 

을 한 후 자신의 주파수에 의해 히스토그램을 정렬하고 중간 값 선택 : 따라서 각 업데이트에서

우리는해야합니다 https://math.stackexchange.com/questions/202302/how-to-calculate-median-and-standard-deviation-from-histogram

이 카운터의 크기는 결정 수를 기준으로 할 수 있습니다 비디오에있는 프레임 수 N = log2 (n) 비트. 이제 중간 값 검색은 히스토그램 내의 일정 시간 검색 이후 단순화됩니다. 이것은 검색이 일정한 시간 검색 독립적으로 유지되기 때문에 많은 히스토그램을 연결할 때도 도움이됩니다. 결국 히스토그램의 전체 크기는 X Y N 비트가됩니다. 여기서 X와 Y는 이미지의 크기입니다.