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

Post on 18-Jan-2016

277 views 0 download

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

영상처리 실습 #4

Histogram 연산

[ Histogram 대화상자 만들기 ]

Histogram 대화상자 만들기

Histogram 대화상자 만들기

Click

Histogram 대화상자 만들기

Histogram 대화상자 만들기

Drag

Histogram 대화상자 만들기

Drag

Click

Histogram 대화상자 만들기

Click

Histogram 대화상자 만들기

Click

Histogram 대화상자 만들기

Histogram 대화상자 만들기

Histogram 대화상자 만들기

Histogram 대화상자 만들기

m_ctrlHistogram

Histogram 대화상자 만들기

Histogram 대화상자 만들기

Double Click

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];

Histogram 대화상자 만들기

CxImage img,추가

unsigned int m_pHistogram[256];unsigned int m_nMaxHistogram;

Double Click

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]);

}

Histogram 대화상자 만들기

Histogram 대화상자 만들기

Click

Histogram 대화상자 만들기

Histogram 대화상자 만들기

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

Histogram 대화상자 만들기

맨위로 스크롤

Histogram 대화상자 만들기

#include "DlgHistogram.h"

Histogram 대화상자 실행

영상처리 실습 #4

Histogram 연산

[ Histogram Equalization ]

Histogram Equalization

Histogram Equalization

Histogram Equalization

총 픽셀 수

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)]++;}

}

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);

Histogram Equalization 결과 영상

원본 영상 결과 영상

Histogram Equalization