Algorithm

Simple Distortion Corretion - 간단한 왜곡보정

빠릿베짱이 2015. 8. 27. 17:44
반응형

src ( 왜곡된 영상 ) ,  dst (펴진 영상) 

보통 보간을 수행할 경우, dst에서 모든 화소에 대해 원하는 src 픽셀을 가져와서 보간을 수행한다.

그렇게 해야 hole 또는 overlap이 생기지 않는다.


아래 왜곡보정 알고리즘의 경우 반대로 수행하기 위한 수식은 다음과 같다.

주의할 부분은 ①/C로 정리하여 tan(a)를 구한 r이 0인 경우, ②/c로 r을 구한다.



관련 링크 : http://www.tannerhelland.com/4743/simple-algorithm-correcting-lens-distortion/

데모 프로그램 : http://photodemon.org/



input:

    strength as floating point >= 0.  0 = no change, high numbers equal stronger correction.

    zoom as floating point >= 1.  (1 = no change in zoom)


algorithm:


    set halfWidth = imageWidth / 2

    set halfHeight = imageHeight / 2

    

    if strength = 0 then strength = 0.00001

    set correctionRadius = squareroot(imageWidth ^ 2 + imageHeight ^ 2) / strength


    for each pixel (x,y) in destinationImage

        set newX = x - halfWidth

        set newY = y - halfHeight


        set distance = squareroot(newX ^ 2 + newY ^ 2)

        set r = distance / correctionRadius

        

        if r = 0 then

            set theta = 1

        else

            set theta = arctangent(r) / r


        set sourceX = halfWidth + theta * newX * zoom

        set sourceY = halfHeight + theta * newY * zoom


        set color of pixel (x, y) to color of source image pixel at (sourceX, sourceY)





반응형