WPF OpenCV 프로젝트 #22: Geometric Transform (이동, 회전, 확대/축소)

Geometric Transform Image

Geometric Transform(기하학적 변환)에서 이미지의 이동과 회전, 확대/축소에 대해 정리하고, WPF OpenCV 프로젝트에 구현하도록 하겠습니다. 지난 포스팅(#21)에서는 히스토그램 버그를 잡느라 잠시 쉬어갔었죠? 오늘은 드디어 잠시 미뤄뒀던 Geometric Transform(기하학적 변환)을 구현해 볼 차례입니다. 그동안 우리는 픽셀의 ‘색상’이나 ‘밝기’를 바꾸는 작업(히스토그램, 정규화 등)을 주로 했습니다. 하지만 오늘 할 작업은 픽셀의 ‘위치’를 바꾸는 작업입니다. 이미지를 옮기고(Translation), 돌리고(Rotation), 크기를 조절하는(Scaling) … 더 읽기

WPF OpenCV 프로젝트 #20: CLAHE (Contrast Limiting Adaptive Histogram Equalization)

WPF OpenCV - CLAE

CLAHE 알고리즘을 WPF OpenCV 프로젝트에 구현하겠습니다. 지난 포스팅(#19)에서는 히스토그램 평활화(Equalize)를 통해 영상의 명암비를 전체적으로 높이는 방법을 다뤘습니다. 확실히 이미지가 밝아지고 선명해지긴 했지만, 혹시 뭔가 “과하다”는 느낌 못 받으셨나요? 너무 어두운 배경에 있던 노이즈(Noise)까지 덩달아 선명해지거나, 밝은 부분이 하얗게 날아가 버리는 현상 말이죠. 오늘은 바로 그 문제를 해결해 주는 ‘업그레이드된 평활화’, CLAHE (Contrast Limiting Adaptive Histogram … 더 읽기

WPF OpenCV 프로젝트 #19: Equalize (히스토그램 평탄화) 구현

OpenCV Equalize 적용 이미지

Equalize (히스토그램 평탄화)와 관련하여 WPF OpenCV 프로젝트 추가해 보도록 하겠습니다. 지난 포스팅(#18)에서는 Normalize (정규화)를 통해 좁은 범위에 몰려 있는 픽셀들을 0~255 전체 구간으로 쫙 펴주는(Stretch) 작업을 했습니다. 하지만 정규화만으로는 해결되지 않는 ‘진짜 골 때리는 애들’ 이 있습니다. 바로 픽셀 값들이 한 곳에 극단적으로 뭉쳐 있는 경우입니다. 이럴 때 필요한 것이 바로 오늘 다룰 Histogram Equalization … 더 읽기

WPF OpenCV 프로젝트 #18: Normalize (정규화)

Nomalize Histogram Graph

Normalize (정규화) 처리를 WPF OpenCV 프로젝트에 구현하도록 하겠습니다. 지난 포스팅(#17)에서는 영상의 밝기 분포를 확인하는 히스토그램(Histogram)을 구현했습니다. 히스토그램을 통해 “아, 이 사진은 픽셀들이 너무 어두운 곳에만 몰려있네?” “어라 ! 이 사진은 픽셀들이 너무 밝은 곳에만 몰려있네? “라는 걸 알았다면, 이제는 그걸 수정할 차례입니다. 바로 Normalize (정규화) 기능을 통해서 말이죠. 이번에는 정규화 라는 녀석의 개념을 제가 가능하다면 … 더 읽기

WPF OpenCV 프로젝트 #15: Otsu Threshold (오츠 알고리즘) 구현

Otsu Threshold

Otsu Thresold (오츠 알고리즘)을 WPF OpenCV 프로젝트에 구현하도록 하겠습니다. 앞선 포스팅들에서 길었다 생각하면 길 수 있는 UI의 터널을 지나왔습니다. ROI(관심 영역)를 자르고(Crop), 저장하고, 그 위에 도형을 그리고… 별로 한건 없는 것 같은데 몇 가지 기능들을 구현했죠. (1편부터 14편까지 대부분을 UI(View)만 붙들고 있었으니 지칠 만도 합니다.) 사실 UI 기능을 더 욕심내자면 끝도 없겠지만, 애초에 이 프로젝트를 … 더 읽기

WPF OpenCV 프로젝트 #14: Bug 수정 (Zoom 측정 시 ROI 좌표 틀어짐 해결) 및 Line Distance (직선 거리 측정) 구현

Bug 수정 (Zoom 측정 시 ROI 좌표 틀어짐 해결) 및 직선 거리 측정을 WPF OpenCV 프로젝트에 구현하겠습니다. 지난 13편까지 우리는 도형 그리기에 ROI 설정까지 정말 많은 기능을 숨 가쁘게 구현해 왔습니다. 그런데 혹시… 뭔가 이상한 점 못 느끼셨나요? (12편부터 계속되던 문제였는데 말이죠.) ROI 사각형을 예쁘게 그려 놓고, 마우스 휠을 돌려 이미지를 확대/축소(Zoom In/Out) 했을 때, … 더 읽기

WPF OpenCV 프로젝트 #13: 이미지 위에 도형 그리기 (선, 원, 사각형) 및 UI 계층 구조 분석

UI View 영역 계층 구조

Line, Circle, Rectangle 과 같이 이미지 위에 도형 그리기 및 UI 계층 구조를 분석하여 WPF OpenCV 프로젝트에 추가하겠습니다. 지난 포스팅(#12)까지 우리는 ROI(관심 영역)를 사각형으로 그리고, 수정하고, 저장하는 기능까지 모두 구현했습니다. 사실상 ROI 기능은 그것으로 충분해 보입니다. 하지만 영상 처리를 진행하다 보면 단순히 네모난 영역만 자르는 게 아니라, 두 지점 사이의 거리를 측정(Line)하거나, 동그란 제품의 크기를 … 더 읽기

WPF OpenCV 프로젝트 #12: ROI(관심 영역) 크기 조절 및 이동 기능 구현 (Interaction)

이번 포스팅에서는 ROI(관심 영역) 크기 조절 및 이동 기능 구현(Interaction)을 WPF OpenCV 프로젝트에 구현하겠습니다. 지난 포스팅(#11)에서 ROI 사각형 주변에 8개의 크기 조절 핸들(Picker)을 예쁘게 배치했습니다. 하지만 아직은 핸들을 잡고 흔들어도 아무 반응이 없었죠? (그림의 떡이었죠.) 오늘은 드디어 이 Picker 핸들에 생명을 불어넣어 ROI 크기를 늘리고 줄이는 기능, 그리고 잘못 그린 ROI를 통째로 이동 시키는 기능을 … 더 읽기

WPF OpenCV 프로젝트 #11: ROI 이미지 저장 및 크기 조절 핸들(Resize Handle) UI 구현

WPF ROI Resize Handle 실행 화면

ROI 이미지 저장 및 ROI 영역 사각형의 크기 조절 핸들(Resize Handle)을 WPF OpenCV 프로젝트에 구현하도록 하겠습니다.지난 포스팅(#10)에서 ROI(관심 영역)를 자르는 기능까지 구현했는데, 글을 올리고 나서 보니 “저장하기“를 빼 먹었더군요. (가끔은 중요한 걸 깜빡하곤 하죠? 저만 그런 거 아니죠?) 그래서 오늘은 1. ROI 이미지 저장 기능을 마무리하고, 사용하다 보니 너무 불편했던 2. ROI 영역 수정(크기 조절) … 더 읽기

WPF OpenCV 프로젝트 #10: ROI(관심 영역) 자르기 및 저장 구현

이번에는 ROI(관심 영역) 자르기와 저장 기능을 WPF OpenCV 프로젝트에 구현해 보죠.지난 포스팅에서 OverlayCanvas를 이용해 ROI를 그릴 UI 뼈대를 만들었습니다. 이제 그 뼈대에 살을 붙여 실제로 작동하는 코드를 만들 차례입니다.오늘은 작업량이 좀 있습니다. 특히 마지막 좌표 계산 부분은 중요하니 끝까지 잘 따라와 주세요! Model: OpenCVService에 자르기 기능 추가 영상 처리에서 관심 영역을 잘라내는 것을 **크롭(Crop)**이라고 하죠? … 더 읽기