warpPolar
void cv::warpPolar(
Mat src,
Mat dst,
Mat dsize,
Point2f center,
double maxRadius,
int flags
)
void Cv2.WarpPolar(
Mat src,
Mat dst,
Size dsize,
Point2f center,
double maxRadius,
InterpolationFlags interpolationFlags,
WarpPolarMode warpPolarMode
)
dst = cv2.warpPolar(
src,
dsize,
center,
maxRadius,
flags
)
Note:
C++ OpenCV와 Python OpenCV는 극좌표 플래그(flags)에 내삽 방식(interpolation) + 극좌표 변환 방식(WarpPolarMode)의 형태로 사용합니다.
절대 크기(dsize)의 너비(Width)와 높이(Height)가 0과 같거나 작은 경우: $$ \text{dsize.Area} = (\text{maxRadius}^2 \cdot \pi) $$ $$ \text{dsize.Width} = \text{round}(\text{maxRadius}) $$ $$ \text{dsize.Height} = \text{round}(\text{maxRadius}\cdot \pi) $$
절대 크기(dsize)의 높이(Height)만 0과 같거나 작은 경우: $$ \text{dsize.Height} = \text{round}(\text{dsize.Width}\cdot \pi) $$
극좌표 변환 계산식(Polar Transform Formula): $$ \text{dst}(\rho,\ \phi) = \text{src}(x,\ y) $$ $$ \rho = \left\{\begin{matrix} \frac{\text{dsize.Width}}{\text{maxRadius}} \cdot \text{magnitude}(\overrightarrow{I}) \\ \frac{\text{dsize.Width}}{log_e{\text{maxRadius}}} \cdot log_e{\text{magnitude}(\overrightarrow{I})} & \text{if:} \ \text{semilog} \end{matrix}\right. $$ $$ \phi = \frac{\text{dsize.Height}}{2\pi} \cdot \text{angle}(\overrightarrow{I}) $$ $$ \overrightarrow{I} = (x - \text{center}.x, \ y - \text{center}.y) $$ $$ \text{magnitude}(\overrightarrow{I}) = \sqrt{x(\overrightarrow{I})^2 + y(\overrightarrow{I})^2} $$ $$ \text{angle}(\overrightarrow{I}) = \text{atan2}(y(\overrightarrow{I}), \ x(\overrightarrow{I})) \cdot \frac{180}{\pi} $$
요약(Summary)
이미지에 극좌표 변환을 적용합니다.
매개변수(Parameter)
입력 이미지(src)
극좌표 변환을 적용하려는 입력 이미지
출력 이미지(dst) 극좌표 변환이 적용된 출력 이미지
절대 크기(dsize)
출력 이미지의 크기
중심점(center)
매핑 기준점
최대 반지름(maxRadius)
변형하려는 크기(magnitude) 비율
극좌표 플래그(flags) 내삽 방식과 극좌표 변환 방식
내삽 방식(interpolation) 이미지 내의 픽셀을 내삽하는데 사용되는 계산 방식
극좌표 변환 방식(warpPolarMode) 극좌표 변환 방식
반환값(Returns)
출력 이미지(dst) 극좌표 변환이 적용된 출력 이미지