OpenCV의 개발 노트 (XVI) : 선형 필터링을위한 기본 알고리즘 - 가우시안 필터

텍스트가 원래 문서의 경우, 허가없이 복제 할 수 없다
원래 블로거의 블로그 주소 : https://blog.csdn.net/qq21497936
원래 블로거 탐색 블로그 : https://blog.csdn.net/qq21497936/article/details / 102 478 062
이 문서의 블로그 주소 : https://blog.csdn.net/qq21497936/article/details/104490409

디렉토리

머리말

데모

가우시안 필터

개요

특징

함수 프로토 타입

소스 데모

버전 번호 v1.11.0에 해당 프로젝트 템플릿


 

OpenCV의 개발 상자

" OpenCV의 개발 노트 (사각형) : 사용 mingw530_32 컴파일 openCV3.4.1의 소스 코드, 빌드 Qt5.9.3 에서 OpenCV의 개발 환경 ."

" 에서 OpenCV 개발 노트의 (a)에서 OpenCV 프리젠 테이션은, 컴파일 "

" OpenCV의 개발 노트 (B) : cvui의 인터페이스 "

" OpenCV의 개발 노트 (C)에서 OpenCV 이미지 개념 및 기본 작동 ."

" OpenCV의 개발 노트 (d)는 : OpenCV의는 가져 오기 및 저장 사진과 비디오 데이터 ."

" OpenCV의 개발 노트 (V) : OpenCV의 읽기 작업 카메라 "

" OpenCV의 개발 정보 (VI) :이 OpenCV의 데이터 구조, 색상, 색 공간 변환 함수를 기초 "

" 에서 OpenCV 개발 노트 (칠) : OpenCV의 기본 그래픽 그리기 "

" OpenCV의 개발 정보 (VIII)에서 OpenCV 미러링 공통 동작 타이밍, 스케일링, 회전, "

" OpenCV의 개발 정보 (IX) 다음에서 OpenCV 영역 화상합니다 (ROI )과 전, 부분 화상을 혼합 "

" OpenCV의 개발 노트 ( 열)에서 OpenCV 이미지의 색상 채널 분리 이미지 색상 및 멀티 채널 믹싱 "

" OpenCV의 개발 노트 (XI)는 :에서 OpenCV 컴파일 지원 GPU는 (CUDA) 윈 - Qt는-mingw32의 개발 가속화 컴파일러 ."

" OpenCV의 개발 노트 (XII) : OpenCV의 컴파일 지원 GPU (CUDA)를 개발 가속화 윈 - QT를-msvc2015 컴파일러 (opencv3.4.0 , cuda9.0 , VS2015) "

" OpenCV의 개발 정보 (XIII)에서 OpenCV 이미지 콘트라스트, 밝기 조정 "

" OpenCV의 개발 정보 (XIV)의 선형 필터링을위한 기본 알고리즘 - 차단 필터 "

" OpenCV의 개발 정보 (XV) : 선형 필터링 알고리즘의 기초 - 평균 필터 "

" OpenCV의 개발 노트 (XVI) : 선형 필터링을위한 기본 알고리즘 - 가우스 필터 "

" OpenCV의 개발 노트 (17)는 선형 필터링 알고리즘과 비교의 기초 - 블록 평균 가우시안 "

" OpenCV의 개발 노트 (XVIII) : 비선형 필터링 알고리즘의 기초 - 중간 필터링 "

" OpenCV의 개발 정보 (XIX) 비선형 필터링 알고리즘의 기초 - 양자 필터링 "

"OpenCV의 개발 정보 (XX) 알고리즘의 비교를 위해 비선형 필터링 기준 - 여과의 양자의 값은"해제 될

"OpenCV의 개발 노트 (XXI) : 형태 학적 필터링 알고리즘의 기초 - 인플레이션은"발매 예정

"OpenCV의 개발 정보 (XXII) 형태학 필터링 알고리즘의 기초 - 부식"해제 될

"OpenCV의 개발 정보 (XXIII) 형태학 필터링 알고리즘의 기초 - (부식 1 팽창 후) 개방 동작"게시 할

"OpenCV의 개발 노트 (24) 형태 적 필터링 알고리즘에 기초하여 - (부식 1 팽창 후) 개폐 동작"게시 할

"OpenCV의 개발 노트 (XXV) : 형태 학적 필터링 알고리즘의 기초 - 흰색 모자"발매 예정

"OpenCV의 개발 노트 (26) : 형태 학적 필터링 알고리즘의 기초 - 블랙 햇 (Black Hat)은"발매 예정

보충에 계속 ...

 

    OpenCV의 개발 노트 (XVI) : 선형 필터링을위한 기본 알고리즘 - 가우시안 필터

 

머리말

이 장에서는 가우시안 필터와 선형 필터링을 설명한다.

 

데모

 

가우시안 필터

개요

      가우시안 필터링은 가우시안 커널 산 컨벌루션 각 픽셀 어레이에 입력 한 화소 값과 컨벌루션 출력된다. 화상을 평활화 한 후 가우스 필터 처리는 표준 편차에 의존한다.

      가우시안 필터 출력은 더 부드럽고 매끄러운 에지 보존도 좋았다이며, 평균 필터에 대해, 따라서 동안 가까운 중앙 높은 가중치에서 화소 당해 상품의 가중 평균이고,.

화상 처리에서는, 가우시안 필터는 일반적으로 두 가지 방법으로 구현된다 :

  • 창 이산 컨벌루션 슬라이딩 창 : 이산 윈도우를 슬라이딩 윈도우 계산이 매우 많은 양이 매우 큰 경우 (즉, 구현 분리 필터를 사용하여) 구현은 퓨리에 기반으로 간주 될 수있다 변환 .
  • 푸리에 변환;

특징

      가우시안 필터링은 다음과 같이 가장 유용한 필터 필터 특성이있다 :

  • 덜 왜곡 : 단일 값 함수는 가우시안 함수 대신 화소의 저장소 가우스 필드의 픽셀 가중 평균값은 상기 화소의 왜곡을 감소, 체중 단조롭게 거리에 따라 변화한다.
  • 회전 대칭 : 회전에 대한 저항을 갖는 가우스 함수, 가우스 성도 평활화 각 방향은, 방향성에 대한 소음 본 견적 매끄러운 성능이 임의의 방향으로 편향되지 않도록하기 어렵고, 동일하다.
  • 되지 주파수에 영향을 푸리에 가우스 함수 변환하는 스펙트럼의 하나의 로브이며, 가우시안 필터는 원하는 신호의 대부분을 유지하면서 평활화 화상의 불필요한 고주파 신호에 의해 영향을받지 않을 것이다.
  • 제어 잡음 파라미터 : 분산의 정도에 의해 가우시안 평활화 필터 (σ)]는 결정 (σ)]은 ,보다 광대역, 평활화의 개선 정도는, 화상 노이즈는 제어 매개 변수가 제공 될 수있다.
  • 박리 : 이차원 가우스 컨벌루션은 두 단계, 첫번째 이미지 및 하나의 차원 가우스 함수의 컨볼 루션, 콘볼 루션 결과와 같은 하나의 차원 가우스 함수의 컨볼 루션에 수직 한 방향으로 수행 될 수있다.

함수 프로토 타입

void GaussianBlur( InputArray src, 
                OutputArray dst,
                Size ksize, 
                double sigmaX,
                double sigmaY = 0,
                int borderType = BORDER_DEFAULT );
  • 매개 변수는 : 일반적으로 이력서 :: 매트를 입력 InputArray 및 이미지 채널의 수를 처리 할 수 있습니다. 참고하지만, 사진의 깊이로 처리해야 CV_8U , CV_16U , CV_16S , CV_32F , CV_64F의 하나.
  • 매개 변수 두 , OutputArray 유형, 출력 대상 이미지는 원래 사진을 필요로하고 동일한 크기와 유형이있다.
  • 세 개의 매개 변수 : 크기를 입력 ksize, 하위 계정의 크기입니다. (H, w) 통용 사이즈가 3 × 3 크기의 서브 회계 크기 (3,3)의 크기를 나타내는 것은로 표시되는 서브 차지하는 W와 H는 서로 다른 크기 일 수있다.
  • 네 개의 매개 변수 : double 형 sigmaX는 X 방향의 가우스 커널 함수의 표준 편차를 나타냅니다.
  • 5 개 개의 매개 변수 : double 형 sigmaY는, Y 방향의 가우스 커널 함수의 표준 편차를 나타냅니다.

위, sigmaX 및 sigmaY가 0 인 경우, 하위 계정을 사용하여 계산의 기본 :

  • 여섯 개 매개 변수 : INT 형 borderType, 외부 경계 픽셀의 특정 이미지 모드를 추론은, 기본은 일반적으로 사용하지 않고, BORDER_DEFULAT 값.

 

소스 데모

void OpenCVManager::testGaussianBlurFilter()
{
    QString fileName1 = "E:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/1.jpg";
    cv::Mat srcMat = cv::imread(fileName1.toStdString());

    cv::String windowName = _windowTitle.toStdString();
    cvui::init(windowName);

    if(!srcMat.data)
    {
        qDebug() << __FILE__ << __LINE__
                 << "Failed to load image:" << fileName1;
        return;
    }

    cv::Mat dstMat;
    dstMat = cv::Mat::zeros(srcMat.size(), srcMat.type());
    cv::Mat windowMat = cv::Mat(cv::Size(dstMat.cols * 3, dstMat.rows),
                                srcMat.type());
    int ksize = 1;      // 核心大小
    int sigmaX = 0;  // x方向的标准偏差
    int sigmaY = 0;  // y方向的标准偏差
    cvui::window(windowMat, dstMat.cols, 0, dstMat.cols, dstMat.rows, "settings");
    while(true)
    {
        windowMat = cv::Scalar(0, 0, 0);
        // 原图先copy到左边
        cv::Mat leftMat = windowMat(cv::Range(0, srcMat.rows),
                                    cv::Range(0, srcMat.cols));
        cv::addWeighted(leftMat, 1.0f, srcMat, 1.0f, 0.0f, leftMat);
        // 中间为调整滤波参数的相关设置
        cvui::printf(windowMat, 375, 20, "ksize = size *  2 + 1");
        cvui::trackbar(windowMat, 375, 30, 165, &ksize, 0, 10);

        cvui::printf(windowMat, 375, 80, "sigmaX");
        cvui::trackbar(windowMat, 375, 90, 165, &sigmaX, 0, 100);

        cvui::printf(windowMat, 375, 140, "sigmaY");
        cvui::trackbar(windowMat, 375, 150, 165, &sigmaY, 0, 100);

        // 高斯滤波
        cv::GaussianBlur(srcMat, dstMat, cv::Size(ksize * 2 + 1, ksize * 2 + 1), sigmaX / 10.f, sigmaY / 10.f);

        // 效果图copy到右边
        // 注意:rang从位置1到位置2,不是位置1+宽度
        cv::Mat rightMat = windowMat(cv::Range(0, srcMat.rows),
                                     cv::Range(srcMat.cols * 2, srcMat.cols * 3));
        cv::addWeighted(rightMat, 0.0f, dstMat, 1.0f, 0.0f, rightMat);
        // 更新
        cvui::update();
        // 显示
        cv::imshow(windowName, windowMat);
        // esc键退出
        if(cv::waitKey(25) == 27)
        {
            break;
        }
    }
}

 

버전 번호 v1.11.0에 해당 프로젝트 템플릿

      해당하는 버전 번호 v1.11.0


원래 블로거의 블로그 주소 : https://blog.csdn.net/qq21497936
원래 블로거 탐색 블로그 : https://blog.csdn.net/qq21497936/article/details/102478062를
이 문서의 블로그 주소 : HTTPS : // 블로그 .csdn.net / qq21497936 / 기사 / 세부 / 104490409

 

 

게시 된 239 개 원래 기사 · 원 찬양 259 · 전망 430 000 +

추천

출처blog.csdn.net/qq21497936/article/details/104490409