| 간략한 설명 | |
|---|---|
|
파일:
\examples\Processing\Loop\DepthFromFocus\DepthFromFocus.vad |
|
|
기본 플랫폼: imaFlex CXP-12 쿼드 |
|
|
요약 설명 루프를 사용하여 이미지 시퀀스로부터 초점이 맞춘 이미지, 인덱스 깊이 맵(depth map) 및 이미지 대비를 계산합니다. |
|
VisualApplets 디자인 "DepthFromFocus.vad"는 부분적으로 초점이 맞지 않은 이미지 시퀀스로부터 완전히 초점이 맞춰진 이미지를 계산합니다. "DepthFromFocus_NoiseReduction.vad" 디자인은 초점이 맞춰진 이미지의 노이즈를 줄일 수 있는 기능도 추가로 제공합니다. 시퀀스의 모든 이미지에 대해 카메라의 초점 설정, 이미지 평면 위치 또는 피사체 위치(축 방향)가 변경됩니다. 이 과정에서 관찰 대상 피사체의 일부는 항상 초점이 맞아야 하며, 이미지의 다른 모든 부분은 초점이 맞지 않아야 합니다. 또한 이 디자인에서는 해당 이미지 인덱스 맵과 함께 이미지 시퀀스의 가장 높은 로컬 대비를 계산합니다. 이 맵은 초점이 맞춰진 출력 이미지의 현재 픽셀이 가져온 이미지가 어느 것인지에 대한 정보를 제공합니다. 이를 통해 관찰 대상 피사체의 형상을 계산할 수 있습니다. 초점이 맞춰진 이미지, 이미지 인덱스 맵 및 대비는 빨간색, 초록색, 파란색 색상 값으로 PC에 전송됩니다. 이 디자인은 marathonVCL 보드용 CameraLink Base 구성의 흑백 카메라용으로 구현되었습니다.
부분적으로 초점이 맞지 않은 이미지 시퀀스로부터 완전히 초점이 맞춰진 이미지를 계산하기 위해, 개별 이미지마다 로컬 대비를 계산합니다. 이 대비는 고역 통과 필터(high-pass filter)를 사용하여 결정됩니다:
현재 이미지의 로컬 대비가 이 위치에서 이전 이미지의 로컬 대비보다 높으면 현재 이미지의 픽셀 값이 사용됩니다. 그렇지 않으면 이전 이미지의 픽셀 값이 사용됩니다. 이 절차는 전체 이미지 시퀀스에 대해 반복됩니다. 완전히 초점이 맞춰진 이미지의 모든 픽셀에 대해 가장 높은 로컬 대비를 가진 해당 이미지의 인덱스가 저장됩니다. 이 정보는 사용자에게 (예: 얇은 렌즈의 경우 초점 거리와 이미지 거리를 알고 있는 경우) 관찰 대상 피사체의 형상을 복원할 수 있는 기능을 제공합니다.
그림 366은 기본 디자인 구조를 보여줍니다. 흑백 카메라의 부분적으로 초점이 맞지 않은 이미지 시퀀스에 대해, 완전히 초점이 맞춰진 이미지, 로컬 대비, 그리고 가장 높은 로컬 대비를 가진 이미지의 인덱스 맵이 DmaToPC를 통해 RGB 색상 구성 요소로 PC에 전송됩니다. 계산은 DepthFromFocus HierarchicalBox 내에서 수행됩니다.
그림 367에서 HierarchicalBox DepthfromFocus의 내용을 볼 수 있습니다. 전송 매개변수 IntParamTranslator_TranslateSequenceLength, IntParamReference_ReferenceImageWidth, IntParamReference_ReferenceImageHeight를 사용하여 DepthFromFocus 상자 내의 모든 필수 오퍼레이터에서 이미지 시퀀스 길이, 이미지 너비 및 높이를 설정할 수 있습니다. 이를 위해 DepthFromFocus 상자를 마우스 우클릭하고 "properties"를 선택한 다음 해당 매개변수를 설정하면 됩니다.
HierarchicalBox HighpassFilter 로컬 대비는 다음의
커널에 대한 필터를 사용하여 계산됩니다. 방정식 46. 이 상자의 상단 출력 링크는 현재 픽셀 값입니다. 이 상자의 하단 출력 링크는 현재 로컬 대비입니다. 오퍼레이터 RxImageLink_Rx2_LoopContrast/TxImageLink_Tx2_LoopContrast 는 이미지 시퀀스로부터 가장 높은 로컬 대비를 계산하는 루프의 시작과 끝을 나타냅니다. 이미지 시퀀스에서 계산을 시작할 때 루프의 초기 조건으로서, 동기화 및 계산상의 이유로 빈 이미지가 HierarchicalBox에 삽입됩니다. InitAndResetContrast.
HierarchicalBox CompareContrast에서는 현재 로컬 대비와 시퀀스의 이전 이미지에서 해당 위치의 로컬 대비를 비교합니다. 그림 368은 이 상자의 내용을 보여줍니다. 현재 로컬 대비가 이전 이미지의 대비보다 높으면, 현재 로컬 대비가 이 HierarchicalBox의 하단 출력 링크로 전달됩니다. 반대의 경우 이전 로컬 대비 값이 전달됩니다. CompareContrast 상자의 상단 출력 링크는 인덱스 0(현재 대비가 더 강함) 또는 1(이전 대비가 더 강함)입니다.
루프 RxImageLink_Rx1_LoopIndexOfBest/TxImageLink_Tx1_LoopDepthIndex 내의 HierarchicalBox SelectDepthIndex(콘텐츠는 그림 369 참조)에서는 현재 이미지의 로컬 콘트라스트가 가장 높은 경우 현재 이미지 인덱스(연산자 ModuloCount_SequenceIndexCount)가 선택됩니다. 그렇지 않은 경우, 이전 이미지의 이미지 인덱스가 이 박스의 출력 링크로 전달됩니다. 이 과정은 전체 이미지 시퀀스에 대해 반복됩니다. 그 결과로 시퀀스에서 가장 높은 로컬 콘트라스트를 가진 이미지 인덱스가 계산됩니다. 빈 이미지를 삽입하는 초기 조건은 InitAndResetDepth 박스에서 수행됩니다.
이미지 시퀀스 중 초점이 완전히 맞은 이미지는 SelectPixelValue 박스에서 수행되는 계산과 함께 루프 RxImageLink_Rx0_LoopPixelValue/ TxImageLink_Tx0_LoopPixelValue에서 계산됩니다. 그림 370에 그 콘텐츠가 나와 있습니다. 현재 로컬 콘트라스트가 이전 이미지의 로컬 콘트라스트보다 높으면 현재 픽셀 값이 IF 연산자의 출력으로 전달됩니다. 이 과정은 전체 이미지 시퀀스에 대해 반복됩니다. 시퀀스의 마지막에는 초점이 완전히 맞은 이미지가 LastImageOfSequenceOnly 박스의 입력으로 전달됩니다.
VA 디자인 "DepthFromFocus_NoiseReduction"에서는 어댑티브 Median Filter를 사용하여 결과 포커스 이미지의 로컬 노이즈를 줄일 수 있습니다. 이 필터는 HierarchicalBox AdaptiveMedian에서 찾을 수 있습니다. 현재 픽셀에 로컬 노이즈가 있는 경우 로컬 Median이 선택됩니다. 현재 위치에 로컬 노이즈가 없으면 현재 픽셀 값이 선택됩니다. 로컬 노이즈는 로스패스 필터와 어댑티브 임계값 IS_GreaterThan_Threshold을 사용하여 판별됩니다. 이 방법을 사용하면 로컬 구조의 콘트라스트 손실을 방지하면서 노이즈를 줄일 수 있습니다.


이전

