[VB.NET] 차근차근 OpenCVSharp 강좌 - 11. 픽셀 최대값 / 최소값

2023. 1. 23. 09:11VB.NET/OpenCVSharp

OpenCVSharp을 만지다보면 가끔 이런 생각이 들때가 있다. 이런 기능까지도 구현을 해놨다고? 궂이? 뭐... 이런생각을 하게 만든 함수에 이번 강좌의 픽셀 최대값 / 최소값도 포함된다. 하지만, 내가 세상을 다 아는건 아니니 누군가에게는 절실한 기능일 수도 있겠지. 암튼 픽셀 최대값 / 최소값은 말 그대로 두개의 이미지를 병합하면서 각 픽셀별로 더 높은 값으로 / 혹은 더 낮은 값으로 결과를 도출시키는 함수이다.

메인폼에 버튼 추가 - Name : ButtonMax, Text : Max

버튼클릭 이벤트에 아래 소스를 추가해서 확인해보자.

Private Sub ButtonMax_Click(sender As Object, e As EventArgs) Handles ButtonMax.Click
    Dim org As New Mat("D:\test\chipmunk.jpg", ImreadModes.Color), dst As New Mat
    Dim val As New Mat("D:\test\carnation.jpg", ImreadModes.Color)
    Cv2.Max(org, val, dst)
    PictureBoxOrg.Image = org.ToBitmap : PictureBoxDst.Image = dst.ToBitmap
End Sub

프로젝트 실행후 Max 버튼을 누르면 아래 화면과 같이 결과가 나와야 성공

OpenCVSharp - 픽셀 Max

최대값은 기존 서로다른 두개의 이미지에서 픽셀별 최대값만 취하는 방식이다보니 우리 눈에 보이는대로 진한 색들만 잘 나온다. 나름 결과가 맘에든다. 이미지가 깨지는게 아니고 둘 사이가 잘 조화되서 합성이 됐다.
그렇다면 최소값은 어떨까? 위 Line3에서 Max를 Min으로만 수정후 실행해보면 아래 화면과 같이 결과가 나온다.

OpenCVSharp - 픽셀 Min

OpenCVSharp으로 두개의 이미지를 합성하는건 아주 뛰어난 Output을 제공해준다. 계속 강조하지만 처리속도가 빠른게 제일 맘에 들고, 원하는대로 정확한 함수에 정확한 수치를 사용하면 아주 괜찮은 이미지 합성이 가능하다.

여기서도 당연히 서로다른 이미지를 합성할 수도 있고, 하나의 이미지에 하나의 픽셀 스칼라값을 합성해서 더 밝게, 혹은 더 어둡게 조절이 가능하니 참고하자.

반응형