선명화
- 원리
- 경계부분의 명암대비를 증폭시킴
- 즉, 밝은 부분은 좀 더 밝게, 어두운 부분은 좀 더 어둡게 만듦
- 선명화 처리 마스크
- 검출된 에지를 원본영상에 더해주는 처리를 수행
void main()
{
int height, width;
int** img = (int**)ReadImage("lena.png", &height, &width);
int** img_out = (int**)IntAlloc2(height, width);
int N = 3;
float** mask = (float**)FloatAlloc2(N, N);
mask[0][0] = -1; mask[0][1] = -1; mask[0][2] = -1;
mask[1][0] = -1; mask[1][1] = 9; mask[1][2] = -1;
mask[2][0] = -1; mask[2][1] = -1; mask[2][2] = -1;
AvgNxN_BoundaryNearestPixel_WithMaskInput(mask, N, img, height, width, img_out);
ImageClipping(img_out, height, width, img_out); // 음수 및 255 초과 값을 범위내로 클리핑
ImageShow("입력영상보기", img, height, width);
ImageShow("출력영상보기", img_out, height, width);
}
void main()
{
int height, width;
int** img = (int**)ReadImage("lena.png", &height, &width);
int** img_out = (int**)IntAlloc2(height, width);
int N = 3;
float** mask = (float**)FloatAlloc2(N, N);
mask[0][0] = 0; mask[0][1] = -1; mask[0][2] = 0;
mask[1][0] = -1; mask[1][1] = 5; mask[1][2] = -1;
mask[2][0] = 0; mask[2][1] = -1; mask[2][2] = 0;
AvgNxN_BoundaryNearestPixel_WithMaskInput(mask, N, img, height, width, img_out);
ImageClipping(img_out, height, width, img_out); // 음수 및 255 초과 값을 범위내로 클리핑
ImageShow("입력영상보기", img, height, width);
ImageShow("출력영상보기", img_out, height, width);
}
void main()
{
int height, width;
int** img = (int**)ReadImage("lena.png", &height, &width);
int** img_out = (int**)IntAlloc2(height, width);
int N = 3;
float alpha = 0.5; // 클수록 에지가 더 강조됨
float** mask = (float**)FloatAlloc2(N, N);
mask[0][0] = -alpha; mask[0][1] = -alpha; mask[0][2] = -alpha;
mask[1][0] = -alpha; mask[1][1] = 1+8.0*alpha; mask[1][2] = -alpha;
mask[2][0] = -alpha; mask[2][1] = -alpha; mask[2][2] = -alpha;
AvgNxN_BoundaryNearestPixel_WithMaskInput(mask, N, img, height, width, img_out);
ImageClipping(img_out, height, width, img_out); // 음수 및 255 초과 값을 범위내로 클리핑
ImageShow("입력영상보기", img, height, width);
ImageShow("출력영상보기", img_out, height, width);
}
댓글