동적 수의 이미지에 이동 평균(rolling average)이 적용됩니다.

간략한 설명

File: \examples\Processing\Loop\RollingAverage\rollingAverage_Loop.vad

기본 플랫폼: imaFlex CXP-12 Quad

간단한 설명

프레임 지연을 발생시키지 않고 실행 중인 이미지 스트림에 이동 평균을 구현합니다. 최근 N개의 흑백 이미지 평균값을 계산하고, 이를 사용하여 현재 이미지와의 결과적인 차이를 컬러로 시각화합니다. 평균값을 생성하는 데 사용되는 이미지 수는 128개로 설정되어 있지만 수정할 수 있습니다.

이 디자인은 이동 평균이 작동하는 방식을 보여줍니다. 하지만 핵심 요소는 더 많은 애플리케이션과 머신 비전 작업을 가능하게 하는 루프입니다. 루프의 작동 방식과 구현 방법을 이해하기 위해 이 예제는 완벽한 출발점이 됩니다.

알고리즘

각 단일 픽셀의 평균값을 계산하고 8비트의 들어오는 값 범위로 정규화합니다. 이를 위해 수신된 각 프레임은 이전 프레임들과 합산되고 수신된 프레임 수로 나뉩니다. 이동 평균 시퀀스의 길이에 도달하면 저장 및 지연된 프레임만큼 합계가 줄어듭니다. 이를 통해 첫 번째 이미지부터 출력 이미지가 이미 생성됩니다.

디자인에서는 두 가지 조건이 이동 평균 시퀀스의 길이를 정의합니다. 두 값 모두 N_rolling이라고 하며 동일한 값으로 설정해야 합니다. 하나는 이미지 차감의 지연 저장 프로세스를 처리하고, 다른 하나는 픽셀 값 정규화를 처리합니다.

Used Loop

RxImageLink 및 TxImageLink 오퍼레이터는 루프 처리를 활성화하는 데 사용됩니다. 들어오는 이미지 시퀀스의 정규화되지 않은 평균 합계는 하나의 루프에서 처리됩니다. 값의 나중 차감을 위해 들어오는 프레임을 저장하는 데 두 번째 루프 처리가 필요합니다. 각 루프는 들어오는 카메라 프레임과 동기화되어야 합니다. 이는 시작 조건을 충족해야 하는 SYNC 오퍼레이터를 유도합니다. 시작 조건 자체는 첫 번째 실행에서 단일 최소 프레임을 도입하는 InsertImage에 의해 처리됩니다. 사용된 SYNC는 프레임 치수를 필요한 값으로 최대화합니다.

평균 처리에 일정 수의 프레임을 저장해야 하므로 ImageBufferMultiRoiDyn 오퍼레이터가 사용됩니다. 첫 번째 이미지는 생성되는 최소 프레임에 의해 동기화 목적이 충족되는 것과 함께 단순히 저장됩니다.

VA 시뮬레이션을 사용하면 SYNC 주변에서 이 작업이 작동하는 방식을 자세히 이해하는 데 도움이 됩니다. 일반적으로 인공적인 최소 프레임 시퀀스가 동기화를 수행합니다.

시각화

두 가지 시각화 방식이 구현되어 있습니다. 첫 번째 방식은 24비트 RGB 이미지를 생성합니다:

  • Plane - Content
  • RED - 현재 이미지
  • GREEN - 평균 이미지
  • BLUE - 차이 이미지

두 번째 접근 방식은 나중에 24비트 RGB로 변환되는 HSL 색상 공간을 기반으로 합니다:

  • Plane - Content
  • HUE / 색조 각도 - 차이 이미지(여기서 최솟값은 녹색)
  • SATURATION - 최댓값으로 설정
  • LIGHTNESS - 현재 이미지

두 번째 접근 방식은 EffectEnable = 1에 의해 켜집니다. 모든 Hue 색조 각도에 대한 차이 scaling에 동적 게인 팩터를 사용할 수 있습니다.

VisualApplets 디자인

예제 "rollingAverage_Loop.vad"는 픽셀당 8비트에서 1024x1024 해상도의 베이스 구성인 흑백 CameraLink 카메라용으로 설계되었습니다.

시뮬레이션 데이터

예제 "rollingAverage_Loop.vad" 폴더 %VASINSTALLDIR%\examples\Processing\Advanced\RollingAverage\street_sequence*.jpg에는 시뮬레이션에 유용한 일련의 이미지가 포함되어 있습니다. 데이터 양을 줄이기 위해 손실 압축 형식이 사용되었습니다.