영상처리 실습 #4 histogram 연산 [ histogram 대화상자 만들기 ]. histogram 대화상자...

33
영영영영 영영 #4 Histogram 연연 [ Histogram 영영영영 영영영 ]

Upload: brandon-eaton

Post on 18-Jan-2016

276 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

영상처리 실습 #4

Histogram 연산

[ Histogram 대화상자 만들기 ]

Page 2: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 3: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Click

Page 4: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 5: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Drag

Page 6: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Drag

Click

Page 7: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Click

Page 8: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Click

Page 9: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 10: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 11: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 12: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

m_ctrlHistogram

Page 13: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 14: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Double Click

Page 15: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

CxImage img,

unsigned int x, y;m_nMaxHistogram = 0;

// 히스토그램 초기화for (x=0; x<256; x++)

m_pHistogram[x] = 0;

// 히스토그램 구하기for (y=0; y<img.GetHeight(); y++)

for (x=0; x<img.GetWidth(); x++)m_pHistogram[img.GetPixelGray(x,y)]++;

// 히스토그램 최대값 구하기for (x=0; x<256; x++)

if (m_pHistogram[x] > m_nMaxHistogram)m_nMaxHistogram = m_pHistogram[x];

Page 16: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

CxImage img,추가

unsigned int m_pHistogram[256];unsigned int m_nMaxHistogram;

Double Click

Page 17: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 18: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 19: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

CRect win_rect;

// 0 점 설정 : 픽쳐컨트롤 왼쪽 아래m_ctrlHistogram.GetWindowRect(&win_rect);ScreenToClient(&win_rect);dc.SetViewportOrg(win_rect.left, win_rect.bottom-1);

// 좌표 설정dc.SetMapMode(MM_ANISOTROPIC);dc.SetWindowExt(256, m_nMaxHistogram+1);dc.SetViewportExt(win_rect.Width(), win_rect.Height());

// 히스토그램 그리기for (int i=0; i<256; i++){

dc.MoveTo(i,0);dc.LineTo(i, -m_pHistogram[i]);

}

Page 20: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 21: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Click

Page 22: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

Page 23: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

CDlgHistogram dlg(*m_pImage);dlg.DoModal();

Page 24: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

맨위로 스크롤

Page 25: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 만들기

#include "DlgHistogram.h"

Page 26: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram 대화상자 실행

Page 27: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

영상처리 실습 #4

Histogram 연산

[ Histogram Equalization ]

Page 28: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram Equalization

Page 29: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram Equalization

Page 30: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram Equalization

총 픽셀 수

Page 31: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram Equalization

int x, y; int i, nTemp;double sum, pixel_Number; /* variable used to increment

sum of hist */double histogram[256]; /* image histogram */double sum_hist[256]; /* sum of histogram elements */double scale_factor; /* normalized scale factor */

/* clear histogram to 0 */for(i=0; i<256; i++)histogram[i]=0;

/* calculate histogram */for(x=0; x<m_pImage->GetHeight(); x++){

for(y=0; y<m_pImage->GetWidth(); y++){

histogram[m_pImage->GetPixelGray(x,y)]++;}

}

Page 32: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram Equalization

/* calculate normalized sum of hist */sum = 0;pixel_Number = m_pImage->GetHeight() * m_pImage->GetWidth();scale_factor = 255.0 /pixel_Number;

for(i=0; i<256; i++){

sum += histogram[i];sum_hist[i] = (sum * scale_factor) + 0.5;

}

/* transform image using new sum_hist as a LUT */for(y=0; y<m_pImage->GetHeight(); y++){

for(x=0; x<m_pImage->GetWidth(); x++){

nTemp = sum_hist[m_pImage->GetPixelGray(x,y)];m_pImage->SetPixelColor(x, y, RGB(nTemp,nTemp,nTemp));

}}

UpdateAllViews(NULL);

Page 33: 영상처리 실습 #4 Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기

Histogram Equalization 결과 영상

원본 영상 결과 영상

Histogram Equalization