본문 바로가기

Theory/Image Processing13

13 기하학적 변환 (22.11.25) 이동 변환이동 변환 실행 결과 영상 회전회전 변환 45도 회전에서 출력 영상의 좌표가 정수가 아님 그림과 같이 구현 가능한가? 출력영상도 정수 좌표에만 값이 존재해야 한다!! img_out[0][0] = img[0][0]; img_out[70.7][70.7] = img[100][0]; img_out[70.7][-70.7] = img[0][100]; img_out[141.4][0] = img[100][100]; 회전 변환의 역변환회전 변환 : 영상의 어떤 점을 중심으로 회전시키기 프로그래밍 : 영상 회전 시키기 cos, sin 함수로 인해 그 결과는 실수값을 가짐 void Rotation(double theta, int** img, int height, int width, int** img_out) { d.. 2023. 6. 22.
12 크기 변환과 쌍선형 보간 (22.11.18) Upsampling과 DownSampling 영상 2배 확대 입력 영상의 픽셀을 출력 영상의 좌표가 짝수인 위치(파란색)에 복사 빈자리(흰색)는 어떻게 채울까? 영상 2배 확대 : 빈자리 채우기 주변 픽셀 단순 복사하여 채우기 영상 2배 확대 : 빈자리 채우기 주변 픽셀의 평균으로 채우기 영상 1/2배 축소 (x, y) 좌표가 짝수인 위치 픽셀만 모아 ½로 줄임 2배 확대 실행 결과 1/2배 축소 실행 결과 샘플링과 스펙트럼 Aliasing의 주파수 영역에서의 관찰 샘플링 : 아나로그신호를 이산신호(discrete-time signal)로 변경 이산신호의 스펙트럼 아나로그신호의 스펙트럼이 샘플링 주파수 간격으로 주기적 반복 최대 주파수(10)의 두배 이상으로 샘플링하는 경우 간섭(aliasing) X 최.. 2023. 6. 22.
11 중간값 필터 (22.11.11) 중간값 크기 순으로 정렬 후 중간 순위에 있는 값 (주의) 평균값과는 다른 의미임 크기 순 정렬을 위한 버블소팅 알고리즘 N개 숫자 중 최대값을 구하고 가장 아랫쪽으로 위치 전단계에서 최대값을 구했으므로, 이 값을 제외한 (N-1)개 숫자 중 최대값을 구하고 가장 아랫쪽에 위치(전단계 최대값 바로 윗쪽이 됨) 전단계까지 최대값과 2번째 최대값을 제외한 (N-2)개 숫자 중 최대값을 구하고 가장 아랫쪽에 위치 이와 같은 과정을 반복 알고리즘 1 구현방법 N개 숫자 중 최대값을 구하고 가장 아랫쪽으로 위치시키기 → 바로 이웃한 값끼리 비교해서 작은 값은 윗쪽에 큰 값을 아랫쪽으로 위치를 바꿈을 반복(버블링) 2차원 배열을 1차원 배열에 복사하기 BubbleSort() 함수를 사용하기 위해서 마스크 내에 있는.. 2023. 6. 22.
10 선명화 처리 (22.11.04) 선명화 원리 경계부분의 명암대비를 증폭시킴 즉, 밝은 부분은 좀 더 밝게, 어두운 부분은 좀 더 어둡게 만듦 선명화 처리 마스크 검출된 에지를 원본영상에 더해주는 처리를 수행 선명화 마스크 구현 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][.. 2023. 6. 22.