멀티미디어시스템특강 5 강 강의자료 2 장 -4 : 영상기하학적처리
수업목표및내용 q 영상의기하학적처리에대하여이해한다. q 영상보간법 (iterpoatio) q 영상의확대축소 q 영상의회전 q 영상미러링 q 실습 4: 영상기하학적변환실습 2/50
영상의기하학적변환개요 [ 영상의기본적인기하학적변환 ] 3/50
영상의기하학적변환개요 기하학적처리 임의의기하학적변환에의해화소들의배치를변경하는처리영상내에서화소들을움직이거나화소들을생성 ( 보간법 ) Scaig Rotatio Trasatio 4/50
영상의기하학적변환개요 (a) 원본영상 (b) 확대영상 그림 2-54: 영상의기하학적변환 (c) 축소영상 (d) 반시계방향으로 30 도회전영상 5/50
기본적인기하학적변환 평행위치이동 : 좌우교환 : 상하교환 : 크기확대및축소 : 영상의회전 : 6/50
기하학적변환 순방향및역방향사상 기하학적변형후의영상을만드는방법으로이를만드는방향에따라 순방향사상 (Forward mappig): 원래의이미지에서목적이미지로구현하는것역방향사상 (Reverse mappig): 목적이미지에서원래이미지로의구현. 실제구현에서많이사용하며, 이는목적이미지의각위치의화소값을결정하면서해당목적이미지로매핑되는원이미지상의좌표를계산하여해당밝기값을결정하면되기때문이다. 7/50
순방향및역방향사상 순방향사상 어떤 x와 y의사상함수에의해서입력화소가출력화소로이동하는것문제점 : 홀 (hoe) 과오버랩 (overap) 홀 (hoe): 정의되지않은화소들로목적화소에대응하는원시화소가존재하지않음 오버랩 (overap): 두개의입력화소가하나의출력화소에대응 (a) 순방향사상 (forward mappig) 8/50
전방향및역방향사상 역방향사상 출력 ( 목적 ) 영상에서원본영상으로의구현으로실제많이사용출력영상의각위치의화소값을결정하면서해당출력영상이미지로매칭되는원본영상의좌표를계산하여해당밝기값을결정홀과중첩의문제를제거 (b) 역방향사상 (reverse mappig) 9/50
보간법 (Iterpoatio) 기본개념 어떤점 (x, y) 가확대축소되어 (X, Y) 로위치가변하면두좌표사이에는 X=ax, Y=by 의관계성립 a, b는 x와 y방향으로의확대율 a, b가 1보다큰값을가지면확대, 작은값을가지면축소 a=b=1/2 a=b=1 a=b=2 10/50
보간법 11/50
보간법 보간법은없는화소값을주변화소값을사용하여얻는방법으로주변의화소들을분석하여새로운화소를생성 인접화소보간법 (Nearest eighbor iterpoatio) 양선형보간법 (Biiear iterpoatio) 고차보간법 (Higher order iterpoatio) 12/50
가장인접한이웃화소보간법 개요 생성된주소에가장가까운원시화소를출력화소로할당원시화소에대해계산된분수주소는가장가까운유효한화소주소로반올림 장점 : 처리속도가빠르다단점 톱니모양으로알려진시각적인뭉툭함입력화소에대응하는출력화소들의수가클수록영상의질이떨어짐결과영상이상황에따라바뀔수있음 13/50
가장인접한이웃화소보간법 ([x], [y]) ([x]+1, [y]) ([x], [y]+1) ([x]+1, [y]+1) 4 배확대 (a) (b) [ 그림 2-56] 가장인접한이웃화소보간법 : (a) 가장인접한이웃화소보간법 ; (b) 가장인접한이웃화소보간법으로 4 배확대한경우의예 14/50
가장인접한이웃화소보간법 1 0-2 -1-0.5 0 0.5 1 2 보간함수 (1 차원보간함수 ) [ 그림 2-57] 가장인접한이웃화소보간법함수 15/50
가장인접한이웃화소보간법 a=b=1/2 a=b=2 중심확대영상 (a) (b) (c) [ 그림 2-58] 가장인접한이웃화소보간법을이용한축소및확대영상 : (a) 1/2 로축소 ; (b) 2 배로확대 ; (c) 중심확대영상 16/50
가장인접한이웃화소보간법 가장간단한방법이며, 처리속도가빠르다. 가장인접한이웃화소를선택하기때문에결과영상이상황에따라바뀔수있다. 새로운화소값이계산될수없기때문에, 모든출력화소에대응하는화소값은입력화소에서찾아야한다. 하나의입력화소의값을갖는출력화소들의수가많으면많을수록출력은더나쁘게보인다. 17/50
가장인접한이웃화소보간법 사상함수가분수의화소주소를계산할때문제발생. 예를들면, 원시 주소를정의하는변환이다음과같다면, x_source = x_dest/2, y_source = y_dest/2 dest[0][0] = source[0][0]; dest[1][1] =? foatx = x_mappig_fuctio(x_dest); foaty = y_mappig_fuctio(y_dest); x_source = (it) (foatx + 0.5); Y_source = (it) (foaty + 0.5); 18/50
양선형보간법 (Biiear Iterpoatio) 개요 새로운화소를생성하기위해네개의가장가까운화소들에가중치를곱한값들의합을사용각각의가중치는화소로부터의거리에반비례가장인접한화소보간법보다더스무딩한영상을산출상당히많은계산량요구 : 화소당 3개의일차보간법 19/50
양선형보간법 (Biiear Iterpoatio) ([x], [y]) ([x]+1, [y]) P Q 1-P 1-Q ([x], [y]+1) ([x]+1, [y]+1) 4 배확대 (a) (b) [ 그림 2-59] 선형보간함수에의한 4 배확대한경우의예 : (a) 양선형보간법개념도 ; (b) 양선형보간법으로 4 배확대한경우의예 20/50
양선형보간법 (Biiear Iterpoatio) 1 0-2 -1 0 1 2 선형보간함수 [ 그림 2-60] 양선형보간법선형보간함수 21/50
양선형보간법 (Biiear Iterpoatio) A a E 1-a B 원시화소 X축보간화소 b X 최종보간화소 E = ( 1-a) A + ab = A+ a( B - A) 1- b F = ( 1-a) C + ad = C + a( D - C) C F D X = ( 1- b) E + bf = E + b( F - E) X = (1 -a) (1 - b) A+ a (1 - b) B + a b D + (1 -a) b C [ 그림 2-61] 양선형보간법에의한밝기값의결정 22/50
양선형보간법 (Biiear Iterpoatio) c a (, i j) p q 1- p b c ( i+ 1, j) a x b 1- q d d (, i j+ 1) c y a (a) ( i+ 1, j+ 1) x b c y a (b) z x b d d (c) (d)
양선형보간법 (Biiear Iterpoatio) (a) a=b=1/2 (b) a=b=2 (c ) 중심확대영상 [ 그림 2-62] 양선형보간법을이용한축소및확대영상 : (a) 1/2 로축소 ; (b) 2 배로확대 ; (c) 중심확대영상 24/50
고등차수보간법 출력화소를생성하기위해 16 개의가장가까운화소요 구 3 차회선 (cubic covoutio) 과 B- 스플라인 25/50
3 차회선보간 3 차회선보간법 (Cubic covoutio iterpoatio) 실수좌표를둘러싸고있는 16개의픽셀값에 3차함수를이용한가중치를부여하여결과영상픽셀의값을계산 가로방향으로 4번, 세로방향으로 1번의 3차회선보간법을수행하여빨간색실수좌표의값을예측 영상처리프로그래밍 By Visua - 26 - 한빛미디어
3 차회선보간 3 차회선보간법가중치함수 ì + - + + ï f x ía x a x a x a x ï î 0 2 x 3 2 ( a 2) x ( a 3) x 1 0 x 1 3 2 ( ) = - 5 + 8-4 1 2 1 0.8 0.6 0.4 0.2 0-0.2-0.4-2 -1.5-1 -0.5 0 0.5 1 1.5 2 a =-1.0, a =-0.5, a =-2.0 영상처리프로그래밍 By Visua - 27 - 한빛미디어
3 차회선보간 3 차회선보간법구현 v v 1 2 v v 3 4 d v= v f(1 + d) + v f( d) + v f(1 - d) + v f(2 -d) 1 2 3 4 ì - + < ï f x í x x x x ï î 0 2 x 3 2 x 2 x 1 0 x 1 3 2 ( ) = - + 5-8 + 4 1 < 2 영상처리프로그래밍 By Visua - 28 - 한빛미디어
3 차회선보간 3 차회선보간법구현 (Co t) 3 2 3 2 { (1 ) 5(1 ) 8(1 ) 4} 1 { 2 1} 2 3 2 3 2 {(1 ) 2(1 ) 1 } { (2 ) 5(2 ) 8(2 ) 4} v= - + d + + d - + d + v + d - d + v + -d - - d + v + - - d + -d - - d + v 3 4 v= (- v + v - v + v ) d + (2v - 2 v + v + v ) d + (- v + v ) d + v 3 2 1 2 3 4 1 2 3 4 1 3 2 한빛미디어
영상확대및축소 영상을확대, 축소하는기법 확대 확대 (magificatio), 스케일링업 (scaig up), 줌 (zoomig), 업샘플링 (upsampig), 스트레칭 (stretchig) 축소 축소 (miificatio), 스케일링다운 (scaig daw), 데시메이션 (decimatio), 다운샘플링 (dow sampig), 쉬링킹 (shrikig) 30/50
영상스케일링 영상을확대, 축소하는기법 특징 스케일링시원래의해상도를향상시킬수없음 q 원래의데이터보다더많은데이터를가지고있지않기때문. 스케일링연산이원래영상을참조한다면, 결과영상의질저하 Scaig으로목적주소 x 와 y를나누어서원시영상의주소를구하며, 그때의화소값은보간함수를사용함으로써결정됨 31/50
영상스케일링 가장인접한이웃화소보간법 단순한영상의재추출영상확대시단순한영상복사를수행 2의배수확대시, q 스캔라인상의각화소를두번, 그리고라인을두번반복 쉽고빠르지만, 좋은결과를산출하지는않음 q 대각선라인의영상이특히안좋음영상축소시스캔라인에서화소를골라냄 1/3 축소시모든세번째스캔라인상의세번째화소가출력영상에복사됨 문제점 q 상세한세부항목을손실할수있음 해결책 q 서브샘플링전에영상을흐리게함 q 저주파통과블러링후, 요구된비율로축소 32/50
영상확대및축소 (a) 원래영상 (b) 2 에의한서브샘플링에의해축소된영상 (c) 흐리게만든후 2 만큼축소된영상 33/50
축소기법들 축소 방법 하나의화소를가지고화소들의블록을표현하는것요구되는처리속도와영상의질에따라방법선택 미디언표현 화소블록을미디언값으로대치평균표현 화소블록을그블록내모든화소들의평균값으로대치 34/50
미디언표현 화소들의블록을그중간값으로대치 블록내화소들을오름차순으로정렬, 중간값선택블록의화소들을정렬하는데많은계산비용소요 Iput Image 13 2 7 4 9 25 8 6 16 output Image 2 4 6 7 8 9 13 16 25 Ordered pixes 35/50
평균표현 화소들의블록을평균값으로대치 Iput Image 13 2 7 4 9 25 8 6 16 output Image (2+4+6+7+ 8+9+13+16 +25)/9=10 average pixes 미디언표현 vs. 평균표현 미디언표현 : 영상선명, 처리속도늦음 ( 정렬 ) 평균표현 : 스무딩효과, 처리속도빠름 36/50
영상이동 (Shift, Trasatio) 영상의일부분을영상의다른위치로이동하는것 이동하기전 이동한후 하나의영상버퍼사용시목적영상이원시윈도우와중첩되는부 작용발생 두개의영상버퍼사용시부작용발생하지않음 37/50
이동 (Shift, Trasatio) 38/50
영상회전 (Rotatio) [ 그림 2-63] 영상의회전 39/50
영상의회전 (rotatio) 주어진각도만큼중심화소에대해서영상을회전 원점 (0,0) 을중심으로한회전 éx ù écosq -siqùéxù ê = y ú ê siq cosq úê y ú ë û ë ûë û ( 식 2-31) 영상의중심에대해반시계방향으로회전 éx ù écosq -siqùéx+ xceter ù éxceter ù ê y ú= ê siq cosq úê + y y ú ê ceter y ú ë û ë ûë + û ë ceter û ( 식 2-32) 40/50
영상회전 (Rotatio) (a) -45 도회전 (b) -135 도회전 (c) 90 도회전 [ 그림 2-64] 다양한영상의회전예들 41/50
회전에관한프로그램예 // 회전중심 (Xc, Yc) 을중심으로 theta 만큼회전한결과영상프로그램예 pritf(" Eter the rotatio age = "); scaf("%f",&theta); theta=theta/57.2958; // radia으로변경 for(i=0;i<n;i++) { for(j=0;j<n;j++) { /* 새로운회전이미지의좌표 */ /* 새로운이미지좌표에대한원본이미지의좌표값계산 */ fy=(foat)(i-xc)*cos(theta) +(foat)(j-yc)*si(theta)+xc; fx=-(foat)(i-xc)*si(theta) +(foat)(j-yc)*cos(theta)+yc; if (fx>=0 && fx<n && fy>=0 && fy<n) { =(usiged char)fy; m=(usiged char)fx; Y[i][j]=X[][m]; } /* ed of if */ } /* ed of j oop */ } /* ed of i oop*/ 42/50
미러링 영상을 X 축, 혹은 Y 축에대해단순하게뒤집는것 단순한화소들의재배열보간법이필요하지않음수평미러링 for (y=0; y<rows; y++) q for (x=0; x<cos; x++) DestImage[y*cos+x]=SourceImage[y*cos+cos-1-x)]; 수직미러링 for (y=0; y<rows; y++) q for (x=0; x<cos; x++) DestImage[y*cos+x]=SourceImage[(rows-1- y)*cos+x]; 43/50
미러링 44/50
기하학적변환 ( 계속 ) (a) (b) (c) (d) (e) (a) 원영상 (b) 이동된영상 (40,40) (c) 확대된영상 (2배) (d) 축소된영상 (1/2배) (e) 오른쪽으로 45 회전된 영상 45/50
질의 / 응답 Thak You! 수고하셨습니다. 46/50