国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生

這篇具有很好參考價值的文章主要介紹了OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

1.圖像噪聲介紹

2.椒鹽噪聲的產(chǎn)生

3.高斯噪聲的產(chǎn)生


1.圖像噪聲介紹

噪聲介紹

? ? ?圖像噪聲是指在圖像中存在的不期望的、隨機(jī)的像素值變化,這些變化來源于多種因素。噪聲可能導(dǎo)致圖像細(xì)節(jié)模糊、失真或難以分辨。

以下是幾種常見的圖像噪聲類型:

? ? ? 1.椒鹽噪聲:又被稱作脈沖噪聲,它會隨機(jī)改變圖像中的像素值,是由相機(jī)成像、圖像傳輸、解碼處理等過程產(chǎn)生的黑白相間的亮暗點(diǎn)噪聲。

? ? ?2. 高斯噪聲:高斯噪聲是指噪聲分布的概率密度函數(shù)服從高斯分布(正態(tài)分布)的一類噪聲。

2.椒鹽噪聲的產(chǎn)生

椒鹽噪聲生成的步驟:

  • Step1:確定添加椒鹽噪聲的位置。
  • Step2:確定噪聲的種類。
  • Step3:修改圖像像素灰度值。
  • Step4:得到含有椒鹽噪聲的圖像。

?由于椒鹽噪聲是隨機(jī)產(chǎn)生的,所以我們要使用opencv中能夠產(chǎn)生 隨機(jī)數(shù)的函數(shù),有下面兩個:

1.rand_double()

double cvflann::rand_double ( double high=1.0,

double low = 0

)

2.rand_int()

int cvflann::rand_int ( int high =RAND MAX,

int low = 0

)

由于圖像像素中的數(shù)據(jù)都是整數(shù),并且產(chǎn)生的椒鹽噪聲的數(shù)據(jù)是0或者255的整數(shù),我們主要使用rand_int()這個函數(shù)。

? ? ? ?在OpenCV中,可以使用cv::Mat類和隨機(jī)數(shù)生成函數(shù)rand_int()來模擬生成椒鹽噪聲。下面是一個示例代碼,展示如何在圖像中添加椒鹽噪聲:


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

using namespace cv;
using namespace std;

//圖像添加椒鹽噪聲函數(shù)
void saltAndPepper(Mat image,int n){
    for(int k=0;k<n/2;k++){
        //隨機(jī)確定圖像中的位置
        int i,j;
        i=cvflann::rand_int()%image.cols;//取余數(shù)運(yùn)算,保證在圖像的列數(shù)內(nèi)
        j=cvflann::rand_int()%image.rows;//取余數(shù)運(yùn)算,保證在圖像的行數(shù)內(nèi)
        int write_black=rand()%2;//判斷為白色噪聲還是黑色噪聲的變量
        if(write_black==0)//添加白色噪聲
        {
            if(image.type()==CV_8UC1){
                image.at<uchar>(j,i)=255;//白色噪聲
            }
            else if(image.type()==CV_8UC4)//處理彩色圖片
            {
                image.at<Vec4b>(j,i)[0]=255;//Vec4b為opencv定義的一個3個值的向量類型,指定通道,B:0 G:1 R:2
                image.at<Vec4b>(j,i)[1]=255;
                image.at<Vec4b>(j,i)[2]=255;
                image.at<Vec4b>(j,i)[3]=255;
            }
        }else{//添加黑色噪聲
            if(image.type()==CV_8UC1){
                image.at<uchar>(j,i)=0;//白色噪聲
            }
            else if(image.type()==CV_8UC4)//處理彩色圖片
            {
                image.at<Vec4b>(j,i)[0]=0;//Vec4b為opencv定義的一個3個值的向量類型,指定通道,B:0 G:1 R:2
                image.at<Vec4b>(j,i)[1]=0;
                image.at<Vec4b>(j,i)[2]=0;
                image.at<Vec4b>(j,i)[3]=0;
            }

        }

    }
}
//椒鹽噪聲
void Saltandpepper_noise(Mat image){
    Mat gray;
    cvtColor(image,gray,COLOR_BGR2GRAY);

    imwrite("/sdcard/DCIM/image.png",image);//展示原圖
    imwrite("/sdcard/DCIM/gray.png",gray);

    saltAndPepper(image,10000);//彩色圖像添加椒鹽噪聲
    saltAndPepper(gray,10000);//灰度圖像添加椒鹽噪聲

    imwrite("/sdcard/DCIM/image_saltAndPepper.png",image);
    imwrite("/sdcard/DCIM/gray_saltAndPepper.png",gray);

}

在上面的代碼中,首先包含了OpenCV的頭文件<opencv2/opencv.hpp>。然后,定義了一個名為SaltAndPepper()的函數(shù),用于向圖像中添加椒鹽噪聲。

該函數(shù)使用cvflann::rand_int()函數(shù)生成隨機(jī)數(shù),并根據(jù)給定的噪聲比例計算添加噪聲的像素數(shù)量。接著,在圖像中隨機(jī)選擇這些像素,并將其值設(shè)置為黑色(0)或白色(255),從而模擬生成椒鹽噪聲。

在Saltandpepper_noise函數(shù)中,讀取了原始圖像,并調(diào)用SaltAndPepper()函數(shù)來添加椒鹽噪聲。然后,使用cv::imwrite()顯示帶有噪聲的圖像。

OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++? ? ? ?OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++

? ? ? ? ?灰度圖像? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?灰度圖像添加椒鹽噪聲

OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++? ??OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++

? ? ? ? ? ? 彩色圖像? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?彩色圖像添加椒鹽噪聲

請注意,在示例代碼中,假設(shè)待處理的圖像是8位無符號整型單通道灰度圖像(CV_8UC1)或4通道彩色圖像(CV_8UC4)。如果處理的圖像類型不同,需要相應(yīng)地修改代碼。

3.高斯噪聲的產(chǎn)生

高斯噪聲生成的步驟:

Step1:創(chuàng)建一個與圖像尺寸、數(shù)據(jù)類型以及通道數(shù)相同的Mat類變量。

Step2:在Mat類變量中產(chǎn)生符合高斯分布的隨機(jī)數(shù)。

Step3:將原圖像和含有高斯分布的隨機(jī)數(shù)矩陣相加。

Step4:得到添加高斯噪聲的圖像。

在OpenCV中,RNG::fill()是一個用于填充數(shù)組或矩陣的函數(shù),它可以生成指定分布的隨機(jī)數(shù),并將其存儲在指定的數(shù)據(jù)結(jié)構(gòu)中。該函數(shù)的簽名如下:

void cv::RNG::fill ( InputOutputArray mat,

int? ? ?distType,

InputArray? ?a,

InputArray? ? ?b,

bool? ? ?saturateRange = false

)

  • mat:用于存放隨機(jī)數(shù)的矩陣,目前只支持低于5通道的矩陣。
  • distType:指定生成隨機(jī)數(shù)分布的類型,可以是以下值之一:
    • RNG::UNIFORM:均勻分布
    • RNG::NORMAL:正態(tài)分布(高斯分布)
  • a:生成分布所需的參數(shù)之一。對于均勻分布,它表示隨機(jī)數(shù)的下界;對于正態(tài)分布,它是均值。
  • b:生成分布所需的參數(shù)之二。對于均勻分布,它表示隨機(jī)數(shù)的上界;對于正態(tài)分布,它是標(biāo)準(zhǔn)差。
  • saturateRange:一個可選的布爾值,如果為true,則將生成的隨機(jī)數(shù)截斷到輸出數(shù)組或矩陣的數(shù)據(jù)類型的有效范圍內(nèi)。

在OpenCV中,可以使用隨機(jī)數(shù)生成函數(shù)和高斯分布函數(shù)來模擬生成高斯噪聲。下面是一個示例代碼,展示如何在圖像中添加高斯噪聲:

//高斯噪聲
void Gaussian_noise(Mat image){
    Mat gray;
    cvtColor(image,gray,COLOR_BGR2GRAY);
    Mat image_noise=Mat::zeros(image.rows,image.cols,image.type());
    Mat gray_noise=Mat::zeros(gray.rows,gray.cols,gray.type());

    imwrite("/sdcard/DCIM/image.png",image);//展示原圖
    imwrite("/sdcard/DCIM/gray.png",gray);

    RNG rng;//創(chuàng)建一個RNG類
    rng.fill(image_noise,RNG::NORMAL,10,20);//生成三通道的高斯分布隨機(jī)數(shù)
    rng.fill(gray_noise,RNG::NORMAL,15,30);

    imwrite("/sdcard/DCIM/image_noise.png",image_noise);//三通道的高斯噪聲
    imwrite("/sdcard/DCIM/gray_noise.png",gray_noise);//單通道的高斯噪聲

    image=image+image_noise;//在彩色圖像中添加高斯噪聲
    gray=gray+gray_noise;//在灰度圖像中添加高斯噪聲

    //顯示添加高斯噪聲后的圖像
    imwrite("/sdcard/DCIM/image_Gaussian.png",image);
    imwrite("/sdcard/DCIM/gray_Gaussian.png",gray);
}

這段示例代碼演示了如何生成高斯噪聲,并將其添加到彩色圖像和灰度圖像中。

首先,代碼使用cvtColor函數(shù)將輸入的彩色圖像轉(zhuǎn)換為灰度圖像,并創(chuàng)建了grayimage變量來存儲結(jié)果。

接下來,代碼創(chuàng)建了兩個空白圖像:image_noisegray_noise,它們與輸入圖像和灰度圖像具有相同的尺寸和類型。這些圖像將用于存儲生成的高斯噪聲。

然后,代碼利用RNG類創(chuàng)建了一個隨機(jī)數(shù)生成器對象rng。

通過調(diào)用rng.fill()函數(shù),代碼將生成服從高斯分布的隨機(jī)數(shù)填充到image_noisegray_noise中。第一個參數(shù)是要填充的圖像,第二個參數(shù)RNG::NORMAL表示生成的隨機(jī)數(shù)應(yīng)符合正態(tài)分布。第三個和第四個參數(shù)分別表示高斯分布的均值和標(biāo)準(zhǔn)差,這里分別為10和20(對于image_noise)以及15和30(對于gray_noise)。這些值可以根據(jù)需要進(jìn)行調(diào)整。

之后,代碼使用imwrite函數(shù)將原始圖像、灰度圖像、生成的高斯噪聲圖像保存到指定路徑,將結(jié)果可視化。

最后,代碼將高斯噪聲添加到輸入的彩色圖像和灰度圖像中,通過對應(yīng)的像素相加。結(jié)果圖像被保存并可視化。

OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++? ? ??OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++

? ? ? ? ? ?灰度圖像? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?灰度圖像添加高斯噪聲

OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++? ? ? ?OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生,Android之OpenCV,opencv,人工智能,計算機(jī)視覺,C++

? ? ? 彩色圖像? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?彩色圖像添加高斯噪聲文章來源地址http://www.zghlxwxcb.cn/news/detail-707042.html

到了這里,關(guān)于OpenCV(二十一):椒鹽噪聲和高斯噪聲的產(chǎn)生的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 01:高斯噪聲和椒鹽噪聲

    01:高斯噪聲和椒鹽噪聲

    記錄一下手寫椒鹽噪聲和高斯噪聲的python程序。 效果圖如下: 椒鹽噪聲和高斯噪聲都是數(shù)字圖像處理中常見的噪聲類型。 1.椒鹽噪聲是 隨機(jī)的黑色和白色像素點(diǎn) 混雜在圖像中,使得圖像中的一些像素點(diǎn)變得十分明顯且不規(guī)則。椒鹽噪聲可能由于傳感器損壞、傳輸錯誤、壓縮

    2024年02月05日
    瀏覽(16)
  • 【OpenCV ? c++】圖像噪音 | 椒鹽噪音 | 高斯噪音

    ??圖像噪聲是圖像在獲取或是傳輸過程中受到隨機(jī)信號干擾,妨礙人們對圖像理解及分析處理的信號。很多時候?qū)D像噪聲看做多維隨機(jī)過程,因而描述噪聲的方法完全可以借用隨機(jī)過程的描述, 也就是用它的概率分布函數(shù)和概率密度分布函數(shù)。圖像噪聲的產(chǎn)生來自圖像獲

    2024年02月08日
    瀏覽(16)
  • 圖像處理:隨機(jī)添加椒鹽噪聲和高斯噪聲Python

    圖像處理:隨機(jī)添加椒鹽噪聲和高斯噪聲Python

    目錄 圖像處理:隨機(jī)添加椒鹽噪聲和高斯噪聲Python 1.常見的圖像噪聲 (1)高斯噪聲 (2) 椒鹽噪聲 2.生成圖像噪聲 (1)高斯噪聲 (2) 椒鹽噪聲(速度慢) (3) 椒鹽噪聲(快速版) 3. Demo測試 ? ? ? ??圖像噪聲是指存在于圖像數(shù)據(jù)中的不必要的或多余的干擾信息。在噪

    2024年02月02日
    瀏覽(23)
  • Opencv-圖像噪聲(均值濾波、高斯濾波、中值濾波)

    Opencv-圖像噪聲(均值濾波、高斯濾波、中值濾波)

    圖像噪聲是圖像處理中常見的問題,它是由于各種原因引入的不希望的隨機(jī)變化或干擾,導(dǎo)致圖像質(zhì)量下降。噪聲可以出現(xiàn)在圖像的亮度、顏色和紋理等方面,對圖像分析、計算機(jī)視覺和圖像處理任務(wù)造成困難。為了減少或消除圖像中的噪聲,常常使用不同類型的濾波技術(shù)。

    2024年02月04日
    瀏覽(97)
  • 【數(shù)字圖像處理】灰度圖像中添加高斯噪聲、椒鹽噪聲、斑點(diǎn)噪聲以及利用不同方法(中值、排序、維納濾波)去除各種噪聲的matlab程序

    【數(shù)字圖像處理】灰度圖像中添加高斯噪聲、椒鹽噪聲、斑點(diǎn)噪聲以及利用不同方法(中值、排序、維納濾波)去除各種噪聲的matlab程序

    圖像處理問題描述: 1、圖像中分別加入不同方差的高斯噪聲、不同噪聲密度椒鹽噪聲和不同方差的斑點(diǎn)噪聲(Gaussian noise, salt ?pepper noise and speckle noise) 2、分別通過函數(shù)medfilt2、ordfilt2和?Wiener 2 去除圖像中添加的一些噪聲(Gaussian noise, salt ?pepper noise and speckle noise)。 各部

    2024年02月07日
    瀏覽(30)
  • OpenCV(二十二):均值濾波、方框濾波和高斯濾波

    OpenCV(二十二):均值濾波、方框濾波和高斯濾波

    目錄 1.均值濾波 2.方框濾波 3.高斯濾波 1.均值濾波 ? ? ? ?OpenCV中的均值濾波(Mean Filter)是一種簡單的濾波技術(shù),用于平滑圖像并減少噪聲。它的原理非常簡單:對于每個像素,將其與其周圍鄰域內(nèi)像素的平均值作為新的像素值。 具體的均值濾波原理如下: 定義濾波器大小

    2024年02月09日
    瀏覽(22)
  • opencv_c++學(xué)習(xí)(二十一)

    opencv_c++學(xué)習(xí)(二十一)

    輪廓檢測函數(shù): image:輸入圖像,數(shù)據(jù)類型為CV_8U的單通道灰度圖像或者二值化圖像。contours:檢測到的輪廓,每個輪廓中存放著像素的坐標(biāo)。 mode:輪廓檢測模式標(biāo)志。 method:輪廓逼近方法標(biāo)志。 offset:每個輪廓點(diǎn)移動的可選偏移量。這個函數(shù)主要用在從ROI圖像中找出的輪廓并基于

    2024年02月06日
    瀏覽(19)
  • 《opencv實用探索·二十一》人臉識別

    《opencv實用探索·二十一》人臉識別

    Haar級聯(lián)分類器 在OpenCV中主要使用了兩種特征(即兩種方法)進(jìn)行人臉檢測,Haar特征和LBP特征。用的最多的是Haar特征人臉檢測。 Haar級聯(lián)分類器是一種用于目標(biāo)檢測的機(jī)器學(xué)習(xí)方法,它是一種基于機(jī)器學(xué)習(xí)的特征選擇方法,能夠快速而有效地檢測出圖像中的對象或特定的模式

    2024年02月03日
    瀏覽(22)
  • Android OpenCV(三十一):圖像形態(tài)學(xué)

    Android OpenCV(三十一):圖像形態(tài)學(xué)

    參數(shù)一:src,輸入的待形態(tài)學(xué)操作圖像,圖像的通道數(shù)可以是任意的,但是圖像的數(shù)據(jù)類型必須是 CV_8U , CV_16U , CV_16S , CV_32F 或 CV_64F 參數(shù)二:dst,形態(tài)學(xué)操作后的輸出圖像,與輸入圖像src具有相同的尺寸和數(shù)據(jù)類型 參數(shù)三:op,形態(tài)學(xué)操作類型的標(biāo)志 標(biāo)志位 值 作用 MO

    2024年04月10日
    瀏覽(25)
  • Android OpenCV(四十一):圖像分割(漫水填充法),看完豁然開朗

    Android OpenCV(四十一):圖像分割(漫水填充法),看完豁然開朗

    漫水填充算法是根據(jù)像素灰度值之間的差值尋找相同區(qū)域?qū)崿F(xiàn)分割。我們可以將圖像的灰度值理解成像素點(diǎn)的高度,這樣一張圖像可以看成崎嶇不平的地面或者山區(qū),向地面上某一個低洼的地方傾倒一定量的水,水將會掩蓋低于某個高度的區(qū)域。漫水填充法利用的就是這樣的

    2024年04月10日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包