サーチ…


構文

  1. Gaussian BlurシンタックスC ++: void GaussianBlur(InputArray src、OutputArray dst、Size ksize、double sigmaX、double sigmaY = 0、int borderType = BORDER_DEFAULT)

パラメーター

ガウスぼかしのパラメータ詳細
src 入力画像の場合、画像は独立して処理される任意の数のチャンネルを持つことができますが、深さはCV_8UCV_16UCV_16SCV_32FまたはCV_64Fなければなりません。
DST srcと同じサイズとタイプの出力イメージ
ksize ガウスカーネルサイズ。 ksize.widthksize.heightは異なる場合がありますが、両方とも正と奇数でなければなりません。あるいは、ゼロにすることもできますし、シグマ*から計算することもできます。
sigmaX X方向のガウスカーネル標準偏差。
sigmaY Y方向のガウスカーネル標準偏差。 sigmaYが0の場合、それはsigmaXと等しくなるように設定され、両方のsigmasが0の場合、 ksize.widthksize.heightから計算されます。このセマンティクスの将来の変更に関係なく結果を完全に制御するには、 ksizesigmaX 、およびsigmaYすべてを指定することをお勧めします。
borderType ピクセル外挿法。

備考

トピックが非常に広いので、他の多くの例を含める必要があるので、ガウスのぼかしに固有の構文とパラメータをこの場所に配置するのは意味がないと思います

C ++でGaussian Blurを使用した画像のスムージング

ブラーリングとも呼ばれるスムージングは​​、画像処理で最も一般的に使用される操作の1つです。

平滑化操作の最も一般的な使用は、さらなる処理のために画像内のノイズ低減することである。

平滑化操作を実行する多くのアルゴリズムがあります。

私たちは、OpenCVのライブラリ関数の使用して、 ガウスフィルタの画像をぼかすために最も一般的に使用されるフィルタの一つを見てみましょうGaussianBlur()このフィルタは、画像から高周波ノイズを除去するために特別に設計されています。

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

using namespace std;
using namespace cv;

int main(int argc, char** argv){

    Mat image , blurredImage;

    // Load the image file
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);

    // Report error if image could not be loaded
    if(!image.data){
        cout<<"Error loading image" << "\n";
        return -1;
    }

    // Apply the Gaussian Blur filter. 
    // The Size object determines the size of the filter (the "range" of the blur)
    GaussianBlur( image, blurredImage, Size( 9, 9 ), 1.0);

    // Show the blurred image in a named window
    imshow("Blurred Image" , blurredImage);

    // Wait indefinitely untill the user presses a key
    waitKey(0);

    return 0;
}

数学的な定義やその他のタイプのフィルタについては、 元のドキュメントを確認することができます

しきい値

Pythonで:

閾値の前に

import cv2
image_path= 'd:/contour.png'
img = cv2.imread(image_path)

#display image before thresholding
cv2.imshow('I am an image display window',img)
cv2.waitKey(0)

#convert image to gray scale - needed for thresholding
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


#apply threshold to gray image to obtain binary image

threshold=150 #value above which pixel values will be set to max_value
max_value=255  #value to which pixels above threshold will be set
threshold_stype=cv2.THRESH_BINARY #default threshold method

ret, img_binary = cv2.threshold(img_gray, threshold, max_value, threshold_stype)

#display image after thresholding
cv2.imshow('image after applying threshold',img_binary)
cv2.waitKey(0)

#save the binary image
cv2.imwrite('d:/binary.png',img_binary)
cv2.destroyAllWindows()

閾値の後

バイラテラルフィルタリング

画像処理アプリケーションでは、バイラテラルフィルタは特別なタイプの非線形フィルタです。

雑音を除去する最も一般的な方法は画像の構造を意識しないガウスぼかしであるため、構造の緩和とノイズ除去の間にトレードオフがあります。したがって、エッジも削除されます。ほとんどの場合、エッジにはシーンに関する貴重な情報が含まれていて、私たちはそれを失いたくはありません。 バイラテラルフィルタはシーンの構造を認識しており、エッジなしの領域にある場合は古典的なぼかしフィルタのように動作する傾向があります。しかし、エッジを見ると、その動作が変わります。ぼかしはエッジ間では機能しませんが、エッジに沿って動作し、エッジを保持するフィルタであることを意味します。

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

void main(int argc, char* argv[]) {
    if(argc==1) {
        std::cout << argv[0] << " <image>" << endl;
        return;
    }

    cv::Mat image, output;
    image = cv::imread(argv[1]);
    if(image.empty()) {
        std::cout << "Unable to load the image: " << argv[1] << endl;
        return;
    }

    cv::bilateralFilter(image, output, 3, 5, 3);
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow