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

영상처리 실습 #4

Embed Size (px)

DESCRIPTION

영상처리 실습 #4. Histogram 연산 [ Histogram 대화상자 만들기 ]. Histogram 대화상자 만들기. 2. 3. 1. Histogram 대화상자 만들기. 1. Click. 2. Histogram 대화상자 만들기. Histogram 대화상자 만들기. Drag. Histogram 대화상자 만들기. 1. 2. Drag. Click. Histogram 대화상자 만들기. 3. 1. 2. Click. Histogram 대화상자 만들기. 1. 2. - PowerPoint PPT Presentation

Citation preview

Page 1: 영상처리 실습  #4

영상처리 실습 #4

Histogram 연산

[ Histogram 대화상자 만들기 ]

Page 2: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 3: 영상처리 실습  #4

Histogram 대화상자 만들기

Click

Page 4: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 5: 영상처리 실습  #4

Histogram 대화상자 만들기

Drag

Page 6: 영상처리 실습  #4

Histogram 대화상자 만들기

Drag

Click

Page 7: 영상처리 실습  #4

Histogram 대화상자 만들기

Click

Page 8: 영상처리 실습  #4

Histogram 대화상자 만들기

Click

Page 9: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 10: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 11: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 12: 영상처리 실습  #4

Histogram 대화상자 만들기

m_ctrlHistogram

Page 13: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 14: 영상처리 실습  #4

Histogram 대화상자 만들기

Double Click

Page 15: 영상처리 실습  #4

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 대화상자 만들기

CxImage img,추가

unsigned int m_pHistogram[256];unsigned int m_nMaxHistogram;

Double Click

Page 17: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 18: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 19: 영상처리 실습  #4

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 대화상자 만들기

Page 21: 영상처리 실습  #4

Histogram 대화상자 만들기

Click

Page 22: 영상처리 실습  #4

Histogram 대화상자 만들기

Page 23: 영상처리 실습  #4

Histogram 대화상자 만들기

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

Page 24: 영상처리 실습  #4

Histogram 대화상자 만들기

맨위로 스크롤

Page 25: 영상처리 실습  #4

Histogram 대화상자 만들기

#include "DlgHistogram.h"

Page 26: 영상처리 실습  #4

Histogram 대화상자 실행

Page 27: 영상처리 실습  #4

영상처리 실습 #4

Histogram 연산

[ Histogram Equalization ]

Page 28: 영상처리 실습  #4

Histogram Equalization

Page 29: 영상처리 실습  #4

Histogram Equalization

Page 30: 영상처리 실습  #4

Histogram Equalization

총 픽셀 수

Page 31: 영상처리 실습  #4

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 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 Equalization 결과 영상

원본 영상 결과 영상

Histogram Equalization