getPerspectiveTransform
Mat cv::getPerspectiveTransform(
const Point2f src[],
const Point2f dst[],
int solveMethod = DECOMP_LU
)
Mat Cv2.GetPerspectiveTransform(
IEnumerable<Point2f> src,
IEnumerable<Point2f> dst
)
retval = cv2.getPerspectiveTransform(
src,
dst,
solveMethod = None
)
원근 변환 행렬 계산식(Perspective Transform Matrix Formula): $$ \begin{bmatrix} {x_1}' \\ {y_1}' \\ {x_2}' \\ {y_2}' \\ {x_3}' \\ {y_3}' \\ {x_4}' \\ {y_4}' \end{bmatrix} = \begin{bmatrix} {x_1} & {y_1} & 1 & 0 & 0 & 0 & -{x_1}' \cdot {x_1} & -{x_1}' \cdot {y_1} \\ 0 & 0 & 0 & {x_1} & {y_1} & 1 & -{y_1}' \cdot {x_1} & -{y_1}' \cdot {y_1} \\ {x_2} & {y_2} & 1 & 0 & 0 & 0 & -{x_2}' \cdot {x_2} & -{x_2}' \cdot {y_2} \\ 0 & 0 & 0 & {x_2} & {y_2} & 1 & -{y_2}' \cdot {x_2} & -{y_2}' \cdot {y_2} \\ {x_3} & {y_3} & 1 & 0 & 0 & 0 & -{x_3}' \cdot {x_3} & -{x_3}' \cdot {y_3} \\ 0 & 0 & 0 & {x_3} & {y_3} & 1 & -{y_3}' \cdot {x_3} & -{y_3}' \cdot {y_3} \\ {x_4} & {y_4} & 1 & 0 & 0 & 0 & -{x_4}' \cdot {x_4} & -{x_4}' \cdot {y_4} \\ 0 & 0 & 0 & {x_4} & {y_4} & 1 & -{y_4}' \cdot {x_4} & -{y_4}' \cdot {y_4} \\ \end{bmatrix} \cdot \begin{bmatrix} a \\ b \\ c \\ d \\ e \\ f \\ g \\ h \end{bmatrix} $$
원근 변환 행렬(Perspective Transform Matrix): $$ \text{matrix} = \begin{bmatrix} a & b & e \\ c & d & f \\ g & h & 1 \end{bmatrix} $$
요약(Summary)
여덟 개의 좌표를 활용해 원근 변환 행렬을 생성합니다.
매개변수(Parameter)
변환 전 네 개의 픽셀 좌표(src)
원근 변환 행렬 생성을 위한 사각형 형태의 픽셀 기준 좌표
변환 후 네 개의 픽셀 좌표(dst)
원근 변환 행렬 생성을 위한 사각형 형태의 픽셀 기준 좌표
행렬 분해 방식(solveMethod) 원근 변환 행렬 분해 계산 방식
반환값(Returns)
원근 변환 행렬(retval)
3×3 원근 변환 행렬