선명화
- 원리
- 경계부분의 명암대비를 증폭시킴
- 즉, 밝은 부분은 좀 더 밝게, 어두운 부분은 좀 더 어둡게 만듦
- 선명화 처리 마스크
- 검출된 에지를 원본영상에 더해주는 처리를 수행

- 선명화 마스크 구현 1
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);
}
- 실행 결과
- 선명화 마스크 구현 2
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);
}
- 실행 결과
- 2개 마스크 비교
- 선명화 강도 조절
-
선명화 처리 마스크 : 선명화 강도의 조절
-
에지를 검출하는 부분에 가중치(a)를 곱함으로써 조절 가능
-
- 선명화 강도 조절 구현
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);
}
- 실행 결과
'Theory > Image Processing' 카테고리의 다른 글
12 크기 변환과 쌍선형 보간 (22.11.18) (0) | 2023.06.22 |
---|---|
11 중간값 필터 (22.11.11) (0) | 2023.06.22 |
09 에지 검출 (라플라시안 & 기타 연산자) (22.10.28) (0) | 2023.06.21 |
08 에지 검출 (미분 연산자) (22.10.28) (0) | 2023.06.21 |
07 필터링(마스킹) (22.10.21) (0) | 2023.06.21 |
댓글