Поиск…


Синтаксис

  1. Gaussian Blur Синтаксис C ++: void GaussianBlur (InputArray src, OutputArray dst, размер ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT)

параметры

Параметры гауссовского размытия подробности
ЦСИ Входное изображение, изображение может иметь любое количество каналов, которые обрабатываются независимо, но глубина должна быть CV_8U , CV_16U , CV_16S , CV_32F или CV_64F .
ДСТ Выходное изображение того же размера и типа, что и src
ksize Гауссовский размер ядра. ksize.width и ksize.height могут отличаться, но оба они должны быть положительными и нечетными . Или они могут быть нулями, а затем они вычисляются из сигмы *.
sigmaX Гауссовское стандартное отклонение ядра в направлении X.
sigmaY Гауссовское стандартное отклонение ядра в направлении Y. если sigmaY равно нулю, он устанавливается равным sigmaX , если обе сигмы являются нулями, они вычисляются из ksize.width и ksize.height . Чтобы полностью контролировать результат независимо от возможных будущих модификаций всей этой семантики, рекомендуется указать все ksize , sigmaX и sigmaY .
borderType Метод экстраполяции пикселей.

замечания

Я не думаю, что имеет смысл поставить синтаксис и параметры, характерные для гауссовского размытия, в этом месте, поскольку тема настолько широка, что она должна включать множество других примеров

Сглаживание изображений с использованием гауссовского размытия в C ++

Сглаживание, также известное как размытие , является одной из наиболее часто используемых операций обработки изображений.

Наиболее частое использование операции сглаживания заключается в уменьшении шума изображения для дальнейшей обработки.

Существует множество алгоритмов для выполнения операций сглаживания.

Мы рассмотрим один из наиболее часто используемых фильтров для смазывания изображения, Гауссовский фильтр с использованием функции библиотеки 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;
}

Для детального математического определения и других типов фильтров вы можете проверить исходную документацию .

Thresholding

В 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