C# OpenCV 강좌 : 제 8강 - 확대 & 축소
확대 & 축소
확대와 축소는 입력 이미지의 크기를 단계적으로 변화시켜 원하는 단계에 도달할 때까지 진행하는 이미지 피라미드
를 사용합니다.
객체가 너무 작거나 입력 이미지가 너무 큰 경우 입력 이미지 자체를 변환해서 영상 처리를 진행합니다.
이미지 피라미드는 가우시안 피라미드(Gaussian Pyramid)
와 라플라시안 피라미드(Laplacian pyramid)
를 활용합니다.
메인 코드
using System;
using OpenCvSharp;
namespace Project
{
class Program
{
static void Main(string[] args)
{
Mat src = new Mat("tree.jpg", ImreadModes.ReducedColor2);
Mat pyrUp = new Mat();
Mat pyrDown = new Mat();
Cv2.PyrUp(src, pyrUp);
Cv2.PyrDown(src, pyrDown);
Cv2.ImShow("pyrUp", pyrUp);
Cv2.ImShow("pyrDown", pyrDown);
Cv2.WaitKey(0);
}
}
}
세부 코드
Mat src = new Mat("tree.jpg");
Mat pyrUp = new Mat();
Mat pyrDown = new Mat();
new Mat
을 사용해 이미지를 src
에 할당합니다.
pyrUp
은 확대된 이미지를 저장할 변수입니다.
pyrDown
은 축소된 이미지를 저장할 변수입니다.
- Tip :
Mat 클래스
를 기본 생성자로 할당할 경우, 클래스나 함수에서 자동으로 속성을 할당합니다.
Cv2.PyrUp(src, pyrUp);
Cv2.PyrDown(src, pyrDown);
확대 함수(Cv2.PyrUp)
또는 축소 함수(Cv2.PyrDown)
를 활용해 이미지를 변환합니다.
Cv2.Pyr*(원본 이미지, 결과 이미지, 결과 이미지 크기, 테두리 외삽법)
으로 이미지 크기를 변환합니다.
결과 이미지 크기
는 매개변수에 직접 인수를 할당해서 (업/다운)샘플링을 수행할 수 있습니다.
테두리 외삽법
은 확대 또는 축소할 경우, 영역 밖의 픽셀은 추정
해서 값을 할당해야합니다.
이미지 밖의 픽셀을 외삽하는데 사용되는 테두리 모드입니다. 외삽 방식을 설정합니다.
테두리 외삽법 종류
속성 | 의미 |
---|---|
InterpolationFlags.Nearest | 가장 가까운 이웃 보간법 |
InterpolationFlags.Linear | 쌍 선형 보간법 |
InterpolationFlags.Area | 영역 보간법 |
InterpolationFlags.Cubic | 4×4 바이 큐빅 보간법 |
InterpolationFlags.Lanczos4 | 8×8 란초스 보간법 |
출력 결과
공유하기


댓글 남기기