fanfuhan OpenCV 教學029 ~ opencv-029-快速的圖像邊緣濾波算法

fanfuhan OpenCV 教學029 ~ opencv-029-快速的圖像邊緣濾波算法

fanfuhan OpenCV 教學029 ~ opencv-029-快速的圖像邊緣濾波算法


資料來源: https://fanfuhan.github.io/

https://fanfuhan.github.io/2019/04/08/opencv-029/

GITHUB:https://github.com/jash-git/fanfuhan_ML_OpenCV


高斯雙邊模糊與mean shift均值模糊兩種邊緣保留濾波算法,都因為計算量比較大,無法實時實現圖像邊緣保留濾波,限制了它們的使用場景,OpenCV中還實現了一種快速的邊緣保留濾波算法。

高斯雙邊與mean shift均值在計算時候使用五維向量是其計算量大速度慢的根本原因,該算法通過等價變換到低緯維度空間,實現了數據降維與快速計算。


C++

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

/*
 * 快速的图像边缘滤波算法
 */
int main() {
    Mat src = imread("../images/test.png");
    if (src.empty()) {
        cout << "could not load image.." << endl;
    }
    imshow("input", src);

    Mat dst;
    edgePreservingFilter(src, dst, 1, 60, 0.44);
    imshow("result", dst);

    waitKey(0);
    return 0;
}


Python

import cv2 as cv
import numpy as np

src = cv.imread("D:/images/example.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

h, w = src.shape[:2]
dst = cv.edgePreservingFilter(src, sigma_s=100, sigma_r=0.4, flags=cv.RECURS_FILTER)
result = np.zeros([h, w*2, 3], dtype=src.dtype)
result[0:h,0:w,:] = src
result[0:h,w:2*w,:] = dst
cv.imshow("result", result)
cv.imwrite("D:/result.png", result)


cv.waitKey(0)
cv.destroyAllWindows()

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *