C# OpenCV 강좌 : 제 7강 - 확대 & 축소

C# OpenCV ZoomIn & ZoomOut

C# OpenCV 강좌 : 제 7강 - 확대 & 축소
[ C#-OpenCvSharp2 ] - 윤대희

이미지 피라미드(Image Pyramid)


0 이미지 피라미드 (Image Pyramid)란 이미지의 크기를 변화시켜 원하는 단계까지 샘플링하는 작업입니다.

영상이나 이미지를 확대, 축소시켜 띄울 수 있습니다.

  • 라플라시안 피라미드(Laplacian pyramid) :  다운 샘플링을 통해 이미지를 1/2배씩 축소시켜 가면서 피라미드를 생성합니다.
  • 가우시안 피라미드(Gaussian Pyramid) : 업 샘플링을 통해 이미지를 2배씩 확대 시켜가면서 피라미드를 생성합니다.


원본(Source, src)를 영상이나 이미지를 사용하면 됩니다.

영상 사용하기 : 3강 바로가기

이미지 사용하기 : 4강 바로가기



Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace test
{
    class OpenCV : IDisposable
    {
        IplImage zoomin;
        IplImage zoomout;
            
        public IplImage ZoomIn(IplImage src)
        {
            zoomin = new IplImage(Cv.Size(src.Width * 2, src.Height * 2), BitDepth.U8, 3);
            Cv.PyrUp(src, zoomin, CvFilter.Gaussian5x5);
            return zoomin;
        }

        public IplImage ZoomOut(IplImage src)
        {
            zoomout = new IplImage(Cv.Size(src.Width / 2, src.Height / 2), BitDepth.U8, 3);
            Cv.PyrDown(src, zoomout, CvFilter.Gaussian5x5);
            return zoomout;
        }
        
        public void Dispose()
        {
            if (zoomin != null) Cv.ReleaseImage(zoomin);
            if (zoomout != null) Cv.ReleaseImage(zoomout);
        }
    }
}                    



Class Code


public IplImage ZoomIn(IplImage src))
{
    ...
} 

public IplImage ZoomOut(IplImage src))
{
    ...
} 

ZoomIn, ZoomOut에서 영상을 확대, 축소하게 됩니다.


zoomin = new IplImage(Cv.Size(src.Width * 2, src.Height * 2), BitDepth.U8, 3);

...

zoomout = new IplImage(Cv.Size(src.Width / 2, src.Height / 2), BitDepth.U8, 3);

zoomin, zoomout에 메모리 확보를 위하여 선언합니다. IplImage(크기, 정밀도, 채널)을 입력합니다. 단색일 경우 채널은 1이며, 다색일 경우 채널은 3입니다.

  • Tip : Cv.Size()를 이용하여 zoomin, zoomout의 크기를 설정합니다.


Cv.PyrUp(src, zoomin, CvFilter.Gaussian5x5);
return zoomin;
...

Cv.PyrDown(src, zoomout, CvFilter.Gaussian5x5);
return zoomout;

PyrUp, PyrDown을 이용하여 화면을 확대, 축소합니다. Cv.Pyr*(원본, 결과, 필터)를 의미합니다.



Main Code


using (OpenCV Convert = new OpenCV())
{
 pictureBoxIpl2.ImageIpl = Convert.ZoomIn(src);
}

//

using (OpenCV Convert = new OpenCV())
{
 pictureBoxIpl2.ImageIpl = Convert.ZoomOut(src);
}

ZoomIn2배의 이미지로 확대하며, ZoomOut1/2배의 이미지로 축소합니다.



Result


원본

1


ZoomIn

2


ZoomOut

3



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post C# OpenCV 강좌 : 제 6강 - 회전 ⤧  Next post C# OpenCV 강좌 : 제 8강 - 크기 조절
    C#-OpenCvSharp2 Category