반응형
감마 보정
- 지수 법칙 변환
- y = T(x) =cx^r
- 영상을 출력하는 장치마다 출력 값이 다름. 그래서 원래의 영상을 출력하기 위해서 감마 보정을 함.
void CImageTool_20150908View::OnGammaCorrection() // 감마 보정
{
// 영상읽어오기.
int i, j, w, h, n = 40;
RGBBYTE** ptr = NULL;
CImageTool_20150908Doc* pDoc = GetDocument();
BYTE value;
if (pDoc->m_Dib.IsValid())
{
w = pDoc->m_Dib.GetWidth();
h = pDoc->m_Dib.GetHeight();
ptr = pDoc->m_Dib.GetRGBPtr();
}
// 감마 보정
float gamma = 2.5f; // 감마(r) 값을 2.5로 보정하기위해서 선언
float invgamma = 1.f / gamma;
for (j = 0; j < h; j++)
for (i = 0; i < w; i++)
{
value = (ptr[j][i].r + ptr[j][i].g + ptr[j][i].b) / 3.0f;
ptr[j][i].r = ptr[j][i].g = ptr[j][i].b = (BYTE)limit(pow(value / 255.f, invgamma) * 255 + 0.5f);
}
Invalidate(); // On Draw 함수 호출
}
반응형
'프로그래밍 > c++ /영상처리' 카테고리의 다른 글
Mean Filter ( 평균값 필터) (0) | 2015.10.01 |
---|---|
OnLButtonDown (0) | 2015.09.21 |
Member initializer (0) | 2015.09.19 |
색채 대비 (0) | 2015.09.16 |
2차원배열 동적할당 (0) | 2015.09.11 |