OpenCVSharp 카메라 제어 #5 ( Auto Focusing )
Software/C#2023. 7. 27. 10:15
반응형
장비제어에서 카메라에 모터를 장착하여 Auto Fucusing 을 사용하는 경우가 많이 있습니다.
전문적인 비젼 전문가는 아니라서 최적의 Auto Fucusing 알고리즘을 코딩하지는 못하지만 그나마 간단하게 실무에서 사용이 가능한 Auto Fucusing 알고리즘 코드를 올려 놓습니다.
이전 카메라 제어 소스(OpenCVSharp 카메라 제어 #4)의 CameraThread 클래스에 아래 함수를 추가 하시면 됩니다.
public double calculate_focus_score()
{
double score = 0;
Mat median = new Mat();
Mat laplacian = new Mat();
try
{
Cv2.MedianBlur(sourceFrame, median, 3) ;
Cv2.Laplacian(median, laplacian, median.Type().Depth, 3, 1, 0);
Cv2.MeanStdDev(laplacian, out var mean, out var stddev);
score = stddev.Val0 * stddev.Val0;
}
finally
{
median.Dispose();
laplacian.Dispose();
}
return score ;
}
사용방법 / 순서
1. 카메라 모터를 초기위치(최상단위치)로 옮겨 놓는다.
2. 모터를 일정높이 만큼 낮춘다.
3. calculate_focus_score() 함수를 실행하여 리턴되는 값과 현재 모터 위치값을 매핑한다.
4. 2~3을 일정 높이에 다다를 때까지 반복한다.
5. calculate_focus_score() 함수 실행 결과값이 가장 큰값이 포커싱이 가장 잘된 위치이므로
값이 가장큰 모터 위치로 카메라를 이동한다.
반응형
'Software > C#' 카테고리의 다른 글
Tag 속성을 이용하여 RadioButton 사용 코딩 줄이기 #2 - C# (0) | 2023.08.29 |
---|---|
Stopwatch 를 이용한 Timeout 기능 구현 - C# (0) | 2023.08.23 |
Tag 속성을 이용하여 RadioButton 사용 코딩 줄이기 #1 - C# (0) | 2023.04.25 |
시리얼 통신에서의 async await 사용 - C# (0) | 2023.03.28 |
Cool Muscle(마쓰루) 모터제어 클래스 C# (0) | 2023.03.22 |
댓글()