Zoeken…


Syntaxis

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

parameters

Parameters van Gaussiaans vervagen Details
src Invoerafbeelding, de afbeelding kan elk aantal kanalen hebben, die onafhankelijk worden verwerkt, maar de diepte moet CV_8U , CV_16U , CV_16S , CV_32F of CV_64F .
dst Afbeelding uitvoeren van dezelfde grootte en hetzelfde type als src
ksize Gaussiaanse kerngrootte. ksize.width en ksize.height kunnen verschillen, maar beide moeten positief en vreemd zijn . Of ze kunnen nullen zijn en vervolgens worden ze berekend uit sigma *.
Sigmax Gaussiaanse kernel standaarddeviatie in X-richting .
sigmaY Gaussiaanse kernel standaarddeviatie in Y-richting . als sigmaY nul is, wordt ingesteld dat deze gelijk is aan sigmaX , als beide sigma's nullen zijn, worden ze berekend uit ksize.width en ksize.height . Om het resultaat volledig te beheersen, ongeacht mogelijke toekomstige wijzigingen van al deze semantiek, wordt aanbevolen om alle ksize , sigmaX en sigmaY .
borderType Pixel extrapolatie methode.

Opmerkingen

Ik denk niet dat het zinvol is om syntaxis en parameters specifiek voor Gaussiaans vervagen op deze plaats te plaatsen, omdat het onderwerp zo breed is dat het veel andere voorbeelden moet bevatten

Afbeeldingen vloeiend maken met Gaussiaans vervagen in C ++

Vloeiend maken, ook bekend als vervagen , is een van de meest gebruikte bewerkingen in beeldverwerking.

Het meest gebruikelijke gebruik van de afvlakbewerking is het verminderen van ruis in het beeld voor verdere verwerking.

Er zijn veel algoritmen om de afvlakbewerking uit te voeren.

We kijken naar een van de meest gebruikte filters voor het vervagen van een afbeelding, het Gaussiaanse filter met de OpenCV-bibliotheekfunctie GaussianBlur() . Dit filter is speciaal ontworpen voor het verwijderen van hoogfrequente ruis uit afbeeldingen.

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

Voor de gedetailleerde wiskundige definitie en andere soorten filters kunt u de originele documentatie raadplegen .

thresholding

In Python:

voor de drempel

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

na drempel

Bilaterale filtering

In beeldverwerkingstoepassingen zijn de bilaterale filters een speciaal type niet-lineaire filters .

Er is een afweging tussen het verliezen van structuur en ruisverwijdering, omdat de meest populaire methode om ruis te verwijderen Gaussiaanse vervaging is, die zich niet bewust is van de structuur van het beeld; daarom verwijdert het ook de randen. Meestal bevatten randen waardevolle informatie over de scène en we willen deze niet kwijt. Het bilaterale filter is zich bewust van de structuur van de scène en heeft de neiging om te werken als een klassiek vervagend filter wanneer het zich op een gebied zonder randen bevindt; wanneer het echter een rand ziet, verandert het zijn gedrag; zodat vervaging niet langs de randen werkt, maar langs de randen, wat betekent dat het filters zijn die de randen behouden .

#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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow