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

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

디렉토리

비선형 필터 두 종류의 비교

데모

소스 데모

버전 번호 v1.15.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) : 형태 학적 필터링 알고리즘의 기초 - 검은 모자"

보충에 계속 ...

 

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

 

머리말

      몇몇은 두 개의 비선형 필터링하기 전에 배운하지만, 필터링 옵션은 여전히 ​​사진의 특성에 따라 선택해야하는 방법을 비선형, 두 개의 비선형 필터의 비교에서이 장에서는 여러 이미지를 사용하려고합니다.

 

비선형 필터 두 종류의 비교

 

데모

 

소스 데모

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

    cv::resize(srcMat, srcMat, cv::Size(400, 300));

    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 * 2),
                                srcMat.type());
    int ksize = 1;      // 核心大小
    int d = 1;
    int sigmaColor = 100;
    int sigmaSpace = 100;
    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, 500, 120, "ksize");
            cvui::trackbar(windowMat, 500, 140, 200, &ksize, 0, 10);

            // 中值滤波
            cv::medianBlur(srcMat, dstMat, ksize * 2 + 1);

            // 效果图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);
        }
        {
            // 原图先copy到左边
            cv::Mat leftMat = windowMat(cv::Range(srcMat.rows, srcMat.rows * 2),
                                        cv::Range(0, srcMat.cols));
            cv::addWeighted(leftMat, 1.0f, srcMat, 1.0f, 0.0f, leftMat);

            // 中间为调整滤波参数的相关设置
            cvui::printf(windowMat, 500, 40 + 300, "d");
            cvui::trackbar(windowMat, 500, 60 + 300, 200, &d, 0, 10);

            // 中间为调整滤波参数的相关设置
            cvui::printf(windowMat, 500, 120 + 300, "sigmaColor");
            cvui::trackbar(windowMat, 500, 140 + 300, 200, &sigmaColor, 0, 1000);

            // 中间为调整滤波参数的相关设置
            cvui::printf(windowMat, 500, 200 + 300, "sigmaSpace");
            cvui::trackbar(windowMat, 500, 220 + 300, 200, &sigmaSpace, 0, 1000);

            // 双边滤波
            cv::bilateralFilter(srcMat,
                                dstMat,
                                d,
                                sigmaColor / 10.f,
                                sigmaSpace / 10.f);

            // 效果图copy到右边
            // 注意:rang从位置1到位置2,不是位置1+宽度
            cv::Mat rightMat = windowMat(cv::Range(srcMat.rows, srcMat.rows * 2),
                                         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.15.0에 해당 프로젝트 템플릿

      해당하는 버전 번호 v1.15.0

 

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

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

추천

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