利用OpenCV給彩色圖像添加椒鹽噪聲的方法
一、圖像噪聲
圖像噪聲是圖像在獲取或者傳輸過程中受到隨機信號干擾,妨礙人們對圖像理解及分析處理的信號。很多時候將圖像看作隨機過程,因而描述噪聲的方法完全可以借用隨機過程的描述,即使用其概率分布函數(shù)和概率密度分布函數(shù)。圖像噪聲的產生來自圖像獲取中的環(huán)境條件和傳感元器件自身的質量,圖像在傳輸過程中產生圖像噪聲的主要因素是所用的傳輸信道受到噪聲污染。
二、椒鹽噪聲
椒鹽噪聲是數(shù)字圖像中的常見噪聲,一般是圖像傳感器、傳輸信道及解碼處理等產生的黑白相間的亮暗點噪聲,椒鹽噪聲常由圖像切割產生。椒鹽噪聲是指兩種噪聲:鹽噪聲和椒噪聲。鹽噪聲一般是白色噪聲,椒噪聲一般為黑色噪聲。前者屬于高灰度噪聲,或者屬于低灰度噪聲,一般兩種噪聲同時出現(xiàn),呈現(xiàn)黑白雜點。去除椒鹽噪聲常用的方法是中值濾波。
三、C++代碼
#include <opencv2\opencv.hpp> #include <iostream> using namespace cv; using namespace std; //-----------------------------------椒鹽噪聲函數(shù)---------------------------------------------- void saltAndPepper(cv::Mat image, int n) { for (int k = 0; k < n / 2; k++) { // 隨機確定圖像中添加椒鹽噪聲的位置 int i, j; i = std::rand() % image.cols; // 取余數(shù)運算,保證在圖像的列數(shù)內 j = std::rand() % image.rows; // 取余數(shù)運算,保證在圖像的行數(shù)內 int write_black = std::rand() % 2; // 判定為白色噪聲還是黑色噪聲的變量 // 添加白色噪聲 if (write_black == 0) { 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; } // 添加黑色噪聲 else { 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; } } } int main() { Mat lena = imread("qq.jpg"); if (lena.empty()) { cout << "請確認圖像文件名稱是否正確" << endl; return -1; } imshow("原圖", lena); saltAndPepper(lena, 10000); // 彩色圖像添加椒鹽噪聲 imshow("添加噪聲", lena); waitKey(0); return 0; }
四、結果展示
1、原圖
2、添加椒鹽噪聲
五、python代碼
import numpy as np import cv2 def salt_pepper_noise(image, prob): """ 添加椒鹽噪聲 :param image: 輸入圖像 :param prob: 噪聲比 :return: 帶有椒鹽噪聲的圖像 """ salt = np.zeros(image.shape, np.uint8) thres = 1 - prob for i in range(image.shape[0]): for j in range(image.shape[1]): rdn = np.random.rand() if rdn < prob: salt[i][j] = 0 elif rdn > thres: salt[i][j] = 255 else: salt[i][j] = image[i][j] return salt src = cv2.imread('qq.jpg') cv2.namedWindow('input_image', cv2.WINDOW_AUTOSIZE) cv2.imshow('input_image', src) tar = salt_pepper_noise(src, 0.01) cv2.imshow('noise', tar) cv2.waitKey(0) cv2.destroyAllWindows()
六、結果展示
1、原圖
2、添加椒鹽噪聲
七、總結
到此這篇關于利用OpenCV給彩色圖像添加椒鹽噪聲的文章就介紹到這了,更多相關OpenCV彩色圖像添加椒鹽噪聲內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python3如何使用saml2.0協(xié)議接入SSO
SAML是一種用于在不同系統(tǒng)之間傳輸安全聲明的XML框架,通過IDP和SP之間的重定向訪問,SP向IDP請求用戶身份認證,IDP驗證用戶身份后返回SAML應答,本文以python3和python3-saml庫為例,介紹了如何接入公司SSO系統(tǒng),包括配置和處理登錄和登出請求2024-11-11Python使用Selenium爬取淘寶異步加載的數(shù)據方法
今天小編就為大家分享一篇Python使用Selenium爬取淘寶異步加載的數(shù)據方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12