日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV—图像椒盐噪声生成器

發(fā)布時間:2024/9/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV—图像椒盐噪声生成器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


OpenCV—圖像椒鹽噪聲生成器


椒鹽噪聲

椒鹽噪聲是由圖像傳感器,傳輸信道,解碼處理等產生的黑白相間的亮暗點噪聲。椒鹽噪聲是指兩種噪聲,一種是鹽噪聲(salt noise)鹽=白色(255),另一種是胡椒噪聲(pepper noise),椒=黑色(0)。前者是高灰度噪聲,后者屬于低灰度噪聲。一般兩種噪聲同時出現,呈現在圖像上就是黑白雜點。對于彩色圖像,也有可能表現為在單個像素BGR三個通道隨機出現的255或0,加入椒鹽噪聲的圖像如下圖所示:


原圖


圖像加入黑白椒鹽噪聲后


圖像分通道加入椒鹽噪聲

添加椒鹽噪聲的函數

函數:

[cpp]?view plaincopy
  • void?salt(cv::Mat?image,?int?n)??
  • void?pepper(cv::Mat?image,?int?n)??
  • 參數:

    • image — 輸入圖像(輸出圖像)灰度或彩色模式
    • n — 噪點個數

    [cpp]?view plaincopy
  • //鹽噪聲??
  • void?salt(cv::Mat?image,?int?n)?{??
  • ??
  • ????int?i,j;??
  • ????for?(int?k=0;?k<n/2;?k++)?{??
  • ??
  • ????????//?rand()?is?the?random?number?generator??
  • ????????i?=?std::rand()%image.cols;?//?%?整除取余數運算符,rand=1022,cols=1000,rand%cols=22??
  • ????????j?=?std::rand()%image.rows;???
  • ??
  • ????????if?(image.type()?==?CV_8UC1)?{?//?gray-level?image??
  • ??
  • ????????????image.at<uchar>(j,i)=?255;?//at方法需要指定Mat變量返回值類型,如uchar等??
  • ??
  • ????????}?else?if?(image.type()?==?CV_8UC3)?{?//?color?image??
  • ??
  • ????????????image.at<cv::Vec3b>(j,i)[0]=?255;?//cv::Vec3b為opencv定義的一個3個值的向量類型??
  • ????????????image.at<cv::Vec3b>(j,i)[1]=?255;?//[]指定通道,B:0,G:1,R:2??
  • ????????????image.at<cv::Vec3b>(j,i)[2]=?255;???
  • ????????}??
  • ????}??
  • }??
  • ??
  • //椒噪聲??
  • void?pepper(cv::Mat?image,?int?n)?{??
  • ??
  • ????int?i,j;??
  • ????for?(int?k=0;?k<n;?k++)?{??
  • ??
  • ????????//?rand()?is?the?random?number?generator??
  • ????????i?=?std::rand()%image.cols;?//?%?整除取余數運算符,rand=1022,cols=1000,rand%cols=22??
  • ????????j?=?std::rand()%image.rows;???
  • ??
  • ????????if?(image.type()?==?CV_8UC1)?{?//?gray-level?image??
  • ??
  • ????????????image.at<uchar>(j,i)=?0;?//at方法需要指定Mat變量返回值類型,如uchar等??
  • ??
  • ????????}?else?if?(image.type()?==?CV_8UC3)?{?//?color?image??
  • ??
  • ????????????image.at<cv::Vec3b>(j,i)[0]=?0;?//cv::Vec3b為opencv定義的一個3個值的向量類型??
  • ????????????image.at<cv::Vec3b>(j,i)[1]=?0;?//[]指定通道,B:0,G:1,R:2??
  • ????????????image.at<cv::Vec3b>(j,i)[2]=?0;???
  • ????????}??
  • ????}??
  • }??
  • 想要分通道加入椒鹽噪聲,只需要在image.at<cv::Vec3b>(j,i)[0]或[1]、[2]三個通道隨機加入255或0即可。
    轉載請注明:iracer的CSDN博客?http://blog.csdn.net/iracer/article/details/49383491
    版權聲明:本文為博主原創(chuàng)文章,未經博主允許不得轉載。 https://blog.csdn.net/iracer/article/details/49383491

    OpenCV—圖像椒鹽噪聲生成器


    椒鹽噪聲

    椒鹽噪聲是由圖像傳感器,傳輸信道,解碼處理等產生的黑白相間的亮暗點噪聲。椒鹽噪聲是指兩種噪聲,一種是鹽噪聲(salt noise)鹽=白色(255),另一種是胡椒噪聲(pepper noise),椒=黑色(0)。前者是高灰度噪聲,后者屬于低灰度噪聲。一般兩種噪聲同時出現,呈現在圖像上就是黑白雜點。對于彩色圖像,也有可能表現為在單個像素BGR三個通道隨機出現的255或0,加入椒鹽噪聲的圖像如下圖所示:


    原圖


    圖像加入黑白椒鹽噪聲后


    圖像分通道加入椒鹽噪聲

    添加椒鹽噪聲的函數

    函數:

    [cpp]?view plaincopy
  • void?salt(cv::Mat?image,?int?n)??
  • void?pepper(cv::Mat?image,?int?n)??
  • 參數:

    • image — 輸入圖像(輸出圖像)灰度或彩色模式
    • n — 噪點個數

    [cpp]?view plaincopy
  • //鹽噪聲??
  • void?salt(cv::Mat?image,?int?n)?{??
  • ??
  • ????int?i,j;??
  • ????for?(int?k=0;?k<n/2;?k++)?{??
  • ??
  • ????????//?rand()?is?the?random?number?generator??
  • ????????i?=?std::rand()%image.cols;?//?%?整除取余數運算符,rand=1022,cols=1000,rand%cols=22??
  • ????????j?=?std::rand()%image.rows;???
  • ??
  • ????????if?(image.type()?==?CV_8UC1)?{?//?gray-level?image??
  • ??
  • ????????????image.at<uchar>(j,i)=?255;?//at方法需要指定Mat變量返回值類型,如uchar等??
  • ??
  • ????????}?else?if?(image.type()?==?CV_8UC3)?{?//?color?image??
  • ??
  • ????????????image.at<cv::Vec3b>(j,i)[0]=?255;?//cv::Vec3b為opencv定義的一個3個值的向量類型??
  • ????????????image.at<cv::Vec3b>(j,i)[1]=?255;?//[]指定通道,B:0,G:1,R:2??
  • ????????????image.at<cv::Vec3b>(j,i)[2]=?255;???
  • ????????}??
  • ????}??
  • }??
  • ??
  • //椒噪聲??
  • void?pepper(cv::Mat?image,?int?n)?{??
  • ??
  • ????int?i,j;??
  • ????for?(int?k=0;?k<n;?k++)?{??
  • ??
  • ????????//?rand()?is?the?random?number?generator??
  • ????????i?=?std::rand()%image.cols;?//?%?整除取余數運算符,rand=1022,cols=1000,rand%cols=22??
  • ????????j?=?std::rand()%image.rows;???
  • ??
  • ????????if?(image.type()?==?CV_8UC1)?{?//?gray-level?image??
  • ??
  • ????????????image.at<uchar>(j,i)=?0;?//at方法需要指定Mat變量返回值類型,如uchar等??
  • ??
  • ????????}?else?if?(image.type()?==?CV_8UC3)?{?//?color?image??
  • ??
  • ????????????image.at<cv::Vec3b>(j,i)[0]=?0;?//cv::Vec3b為opencv定義的一個3個值的向量類型??
  • ????????????image.at<cv::Vec3b>(j,i)[1]=?0;?//[]指定通道,B:0,G:1,R:2??
  • ????????????image.at<cv::Vec3b>(j,i)[2]=?0;???
  • ????????}??
  • ????}??
  • }??
  • 想要分通道加入椒鹽噪聲,只需要在image.at<cv::Vec3b>(j,i)[0]或[1]、[2]三個通道隨機加入255或0即可。
    轉載請注明:iracer的CSDN博客?http://blog.csdn.net/iracer/article/details/49383491
    版權聲明:本文為博主原創(chuàng)文章,未經博主允許不得轉載。 https://blog.csdn.net/iracer/article/details/49383491

    總結

    以上是生活随笔為你收集整理的OpenCV—图像椒盐噪声生成器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。