七、模糊操作

一、模糊操作基本原理

1,基于離散卷積
2,定義好每一個卷積核
3,不同卷積核得到不同的卷積效果
4,模糊是卷積的一種表象

二、1*3卷積核舉例

每次右移一格,進行對應相乘再求和。1*3的卷積核左右兩邊的元素并沒有處理而是照搬下來。卷積核一般都奇數。
在這里插入圖片描述

三、均值模糊

對隨機噪聲有很好的去噪效果

1,基于平均值的均值模糊

cv2.blur(image,(5,5))需要傳入目標圖像,定義卷積核大小

import cv2
import numpy as npdef blur(image):dst = cv2.blur(image,(5,5))cv2.imshow("blur",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
blur(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

2,基于權重的高斯模糊

①概念公式

Ⅰ一維高斯正態分布
在這里插入圖片描述在這里插入圖片描述
Ⅱ二維高斯公式
在這里插入圖片描述在這里插入圖片描述
Ⅲ實際上圖像是個二維的,若采用二維卷積核去計算的話很耗時,一般采用兩個一維卷積核去操作運算
例如二維卷積核在這里插入圖片描述
可由在這里插入圖片描述在這里插入圖片描述
兩個一維卷積核來等效替代

②高斯噪聲

實際上就是多個隨機點分別對應加上原圖像上

import cv2
import numpy as npdef clamp(pv):if pv>255: return 255if pv<0: return 0else : return pvdef gaussian_noise(image):h,w,c = image.shapefor row in range(h):for col in range(w):s = np.random.normal(0,20,3)b = image[row,col,0]g = image[row,col,1]r = image[row,col,2]image[row,col,0]=clamp(b+s[0])image[row,col,1]=clamp(g+s[1])image[row,col,2]=clamp(r+s[2])cv2.imshow("noise",image)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
t1 = cv2.getTickCount()
gaussian_noise(src)
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()# s
print("time is %s"%(time*1000))# mscv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:在這里插入圖片描述

在這里插入圖片描述

③高斯模糊

cv2.GaussianBlur(src,(0,0),15)15表示公式中的σ的值

import cv2
import numpy as npsrc = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
dst = cv2.GaussianBlur(src,(0,0),15)
cv2.imshow("GaussianBlur",dst)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

④使用高斯模糊消除高斯噪聲
import cv2
import numpy as npdef clamp(pv):if pv>255: return 255if pv<0: return 0else : return pvdef gaussian_noise(image):h,w,c = image.shapefor row in range(h):for col in range(w):s = np.random.normal(0,20,3)b = image[row,col,0]g = image[row,col,1]r = image[row,col,2]image[row,col,0]=clamp(b+s[0])image[row,col,1]=clamp(g+s[1])image[row,col,2]=clamp(r+s[2])cv2.imshow("noise",image)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)t1 = cv2.getTickCount()
gaussian_noise(src)#給圖像加入高斯噪聲
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()# s
print("time is %s"%(time*1000))# ms#dst = cv2.GaussianBlur(src,(0,0),15)
dst = cv2.GaussianBlur(src,(5,5),0)#對加入高斯噪聲的圖像進行高斯模糊操作
cv2.imshow("GaussianBlur",dst)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:在這里插入圖片描述
在這里插入圖片描述

二、中值模糊

中值模糊一般用于消除椒鹽噪聲
cv2.medianBlur(image,5)需要傳入目標圖像,卷積核大小

import cv2
import numpy as npdef median_blur(image):dst = cv2.medianBlur(image,5)cv2.imshow("median_blur",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\l.png")
cv2.imshow("image",src)
median_blur(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

三、自定義模糊

cv2.filter2D(image,-1,kernel=kernel1)需要傳入目標圖像,自定義卷積核

import cv2
import numpy as np'''
之所以有的需要除以25和除以9,是因為所有的卷積核之和為1才行
'''
def custom_blur(image):kernel1 = np.ones([5,5],np.float32)/25 #需要滿足卷積核之和為1故需要除以25dst1 = cv2.filter2D(image,-1,kernel=kernel1)cv2.imshow("custom_blur_1",dst1)kernel2 = np.array([[1,1,1],[1,1,1],[1,1,1]],np.float32)/9 #需要滿足卷積核之和為1故需要除以9dst2 = cv2.filter2D(image,-1,kernel=kernel2)cv2.imshow("custom_blur_2",dst2)kernel3 = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)#這個卷積核實際上就是圖像的銳化dst3 = cv2.filter2D(image,-1,kernel=kernel3)cv2.imshow("custom_blur_3",dst3)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
custom_blur(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378028.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378028.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378028.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 100. 相同的樹 思考分析

給定兩個二叉樹&#xff0c;編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同&#xff0c;并且節點具有相同的值&#xff0c;則認為它們是相同的。 示例 1: 輸入: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3]輸出: true 示例 2: 輸入: 1 1 / 2 2 [1,2], [1,null,2]輸…

在Python中以二進制格式輸入數字

Syntax to convert binary value to an integer (decimal format), 將二進制值轉換為整數(十進制格式)的語法&#xff0c; int(bin_value, 2)Here, 這里&#xff0c; bin_value should contain the valid binary value bin_value應該包含有效的二進制值 2 is the base value …

八、邊緣保留濾波(EPF)

一、概念 邊緣保留濾波(EPF,edge preserving filtering) 二、高斯雙邊 cv2.bilateralFilter(image,0,100,15)100為差異&#xff0c;15為周圍的區域 import cv2 import numpy as npdef bilateralFilter(image):dst cv2.bilateralFilter(image,0,100,15)cv2.imshow(bilater…

LintCode 375. 克隆二叉樹(深復制)

先序遍歷構造二叉樹 TreeNode * preorder(TreeNode * root){if(rootNULL) return NULL;TreeNode * ans;ansnew TreeNode(root->val);if(root->left!NULL){ans->leftpreorder(root->left);}if(root->right!NULL){ans->rightpreorder(root->right);}return…

關于ECMAScript基礎入門的分享

目錄 ECMAScript基礎入門1. 介紹2. 變量與數據類型2.1 變量2.2 數據類型 3. 運算符3.1 算術運算符3.2 比較運算符 4. 控制流4.1 條件語句4.2 循環語句 5. 函數6. 對象與數組6.1 對象6.2 數組 7. 總結 ECMAScript基礎入門 1. 介紹 ECMAScript是JavaScript的標準規范&#xff0…

kotlin 計算平方_Kotlin程序來計算復利

kotlin 計算平方Compound interest is the sum of principal amount and interest of interest. 復利是本金和利息之和。 Given, principal, rate, and time, we have to calculate the Compound interest. 給定本金&#xff0c;利率和時間&#xff0c;我們必須計算復利。 Fo…

近代科學為什么誕生在西方-1

寬泛的講&#xff0c;近代科學是幾種文明在長達幾個世紀的持續交流碰撞中產生的。它正在日益成為全世界全人類都有效的普適科學。通向現代科學之路就是通向自由和開放交流之路。 馬克思韋伯和莫頓都認為&#xff0c;科學事業要持續的進步就要特定的文化和制度的支持。 中國的數…

九、圖像直方圖

一、圖像直方圖的屬性 說白了就是將圖像上的各個顏色通道上的像素點的像素值進行統計&#xff0c;例如&#xff1a;像素值為14的像素點個數有幾個&#xff0c;進行顯示。 圖像的像素值取值范圍為[0,255]&#xff0c;這個范圍也成為直方圖的range也就是直方圖的橫坐標軸 每一個…

BIFR的完整形式是什么?

BIFR&#xff1a;工業和金融重組委員會 (BIFR: Board of Industrial and Financial Reconstruction) BIFR is an abbreviation of the Board of Industrial and Financial Reconstruction. It was an organization of the Government of India and a branch of the Department …

LeetCode 101. 對稱二叉樹 思考分析

題目 給定一個二叉樹&#xff0c;檢查它是否是鏡像對稱的。 例如&#xff0c;二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1/ 2 2 / \ / 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的: 1/ 2 2 \ 3 3 進階&#xff1a; 你可以運用遞歸和迭代兩種方法解決這個…

內心能不能寧靜一點,做事能不能堅持一下

內心能不能寧靜一點&#xff0c;做事能不能堅持一下 每次朋友問我怎么樣&#xff0c;我總感覺不好回答&#xff0c;如果說實話我想他們或許是不能理解我的處境的&#xff0c;只能報以“還好”之類的語言&#xff0c;糊弄一下。唯一一次說了實話是&#xff1a;我墜落了&#xff…

直方圖反向投影

通過直方圖反向投影&#xff0c;根據目標衣服顏色的特征來進行定位 cv2.calcHist([roi_hsv],[0,1],None,[32,48],[0,180,0,256])其中[32,48]表示bin的個數&#xff0c;可以修改&#xff0c;當然范圍越小越精確 import cv2 import numpy as np from matplotlib import pyplot …

javascript 排序_JavaScript中的排序方法

javascript 排序There are tons of sorting algorithms available like bubble sort, merge sort, insertion sort etc. You must have implemented some of these in other programming languages like C or C. But in this article, I will be demonstrating the Sorting met…

LeetCode 二叉樹、N叉樹的最大深度與最小深度(遞歸解)

目錄104. 二叉樹的最大深度559. N叉樹的最大深度111. 二叉樹的最小深度之前的筆記中&#xff0c;已經用層序遍歷解決過這個問題了現在試著用深度的解法去求解104. 二叉樹的最大深度 給定一個二叉樹&#xff0c;找出其最大深度。 二叉樹的深度為根節點到最遠葉子節點的最長路徑…

十、模板匹配

一、概念 模板匹配就是在整個圖像區域發現與給定子圖像匹配的小塊區域。 需要首先給定一個模板圖像A&#xff0c;和一個待檢測圖像B。 在待檢測圖像B上&#xff0c;從左往右&#xff0c;從上往下計算待檢測圖像B和模板圖像A所重疊的匹配度&#xff0c;匹配度越高則兩者相同的可…

基于WF的意見征集4(淺析)

接口項目&#xff1a;IClass&#xff08;項目名稱&#xff09; HTHuiFuusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Workflow.Runtime;using System.Workflow.Activities;namespace IClass{ /// <summary> /…

那些VisualStudio隱藏的調試功能

VisualStudio是一個強大的調試工具&#xff0c;里面很多隱藏功能少有人問津&#xff0c;但是在特定場景可以節省你很多時間&#xff0c;本文主要介紹一些VisualStudio調試相關的隱藏功能&#xff0c;歡迎大家補充。 運行到指針(Run to cursor) 大多數人用Visual Studio在調試程…

php連接數據庫代碼_PHP代碼連接各種數據庫

php連接數據庫代碼1)用PHP連接MySQL (1) Connecting with MySQL in PHP) <?php$host "localhost";$uname "username";$pw "password";$db "newDB";try {$conn new PDO("mysql:host$host;dbname$db", $uname, $pw);…

【C++ grammar】對象和類(創建對象、對象拷貝、分離聲明與實現)

目錄1、用類創建對象1、面向對象的特征2、對象由什么構成3、如何定義對象4、創建對象并訪問對象成員1. Constructors(構造函數)2. Constructing Objects (創建對象)3. Object Member Access Operator(對象訪問運算符)2、對象拷貝以及分離聲明與實現1、類是一種數據類型1.1. 定義…

十一、圖像二值化

一、二值圖像 其實就是把圖像轉換為只有黑白的兩種顏色圖像&#xff0c;即像素值非零即一 三角閾值二值化 對一個圖像進行操作&#xff0c;獲取圖像的直方圖&#xff0c;找到波峰和波谷進行連線設為線段A&#xff0c;每個點做有關線段A的垂線垂足在線段A上&#xff0c;最后將…