Szukaj…


Składnia

  1. Gaussian Blur Składnia C ++: void GaussianBlur (InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT)

Parametry

Parametry rozmycia gaussowskiego Detale
src Obraz wejściowy, obraz może mieć dowolną liczbę kanałów, które są przetwarzane niezależnie, ale głębokość powinna wynosić CV_8U , CV_16U , CV_16S , CV_32F lub CV_64F .
dst Obraz wyjściowy tego samego rozmiaru i typu co src
ksize Rozmiar jądra Gaussa. ksize.width i ksize.height mogą się różnić, ale oba muszą być dodatnie i nieparzyste . Lub mogą być zerami, a następnie są obliczane z sigma *.
sigmaX Odchylenie standardowe jądra Gaussa w kierunku X.
sigmaY Odchylenie standardowe jądra Gaussa w kierunku Y. jeśli sigmaY wynosi zero, to jest ustawione na równe sigmaX , jeśli oba sigma są zerami, są obliczane z ksize.width i ksize.height . Aby w pełni kontrolować wynik niezależnie od możliwych przyszłych modyfikacji całej tej semantyki, zaleca się określenie wszystkich ksize , sigmaX i sigmaY .
borderType Metoda ekstrapolacji pikseli.

Uwagi

Nie sądzę, aby umieszczanie w tym miejscu składni i parametrów charakterystycznych dla rozmycia gaussowskiego miało sens, ponieważ temat jest tak szeroki, że powinien zawierać wiele innych przykładów

Wygładzanie obrazów rozmyciem gaussowskim w C ++

Wygładzanie, znane również jako rozmycie , jest jedną z najczęściej używanych operacji w przetwarzaniu obrazu.

Najczęstszym zastosowaniem operacji wygładzania jest redukcja szumów na obrazie w celu dalszego przetwarzania.

Istnieje wiele algorytmów do wykonywania operacji wygładzania.

Przyjrzymy się jednemu z najczęściej używanych filtrów do rozmycia obrazu, filtrowi Gaussa przy użyciu funkcji biblioteki OpenCV GaussianBlur() . Ten filtr został zaprojektowany specjalnie do usuwania szumów o wysokiej częstotliwości z obrazów.

#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;
}

Aby uzyskać szczegółową definicję matematyczną i inne typy filtrów, możesz sprawdzić oryginalną dokumentację .

Próg

W Pythonie:

przed progiem

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()

po progu

Filtrowanie dwustronne

W aplikacjach do przetwarzania obrazów filtry dwustronne są specjalnym rodzajem filtrów nieliniowych .

Istnieje kompromis między utratą struktury a usuwaniem szumów, ponieważ najbardziej popularną metodą usuwania szumu jest rozmycie gaussowskie, które nie jest świadome struktury obrazu; dlatego usuwa również krawędzie. Przez większość czasu krawędzie zawierają cenne informacje o scenie i nie chcemy ich tracić. Dwustronny filtr jest świadomy struktury sceny i ma tendencję do działania jak klasyczny filtr rozmywający, gdy znajduje się na obszarze bez krawędzi; jednak gdy widzi krawędź, zmienia swoje zachowanie; tak więc rozmycie nie działa na krawędziach, ale działa wzdłuż krawędzi, co oznacza, że są to filtry zabezpieczające krawędzie .

#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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow