<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文是OpenCV影象視覺入門之路的第10篇文章,本文詳細的在影象上面進行了影象均值濾波、方框濾波 、高斯濾波、中值濾波、雙邊濾波、2D折積等操作。
OpenCV 中的簡單濾波(例如均值濾波或中值濾波)可能會使影象變得模糊,因為它們會平滑影象中的細節和邊緣。如果濾波的程度過強,則可能會導致影象失真,使其看起來更差。因此,濾波的程度需要適當地控制,以獲得最佳效果。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg") # 讀取彩色影象(BGR) # 均值濾波 # 簡單的平均折積操作 img_blur1 = cv2.blur(img1, (3, 3)) # 使用3*3的折積核 img_blur2 = cv2.blur(img1, (30, 30)) # 使用30*30的折積核 cv2.imshow("blur1", img_blur1) # 顯示疊加影象 dst cv2.imshow("blur2", img_blur2) # 顯示疊加影象 dst cv2.imshow("image", img1) # 顯示疊加影象 dst cv2.waitKey(0) cv2.destroyAllWindows()
方框濾波是一種影象平滑技術,在 OpenCV 中可以使用。方框濾波的主要作用是對影象進行去噪和平滑處理,使影象變得更加平滑,減少影象的鋸齒狀、噪聲等不規則的部分。在影象處理中,方框濾波通常作為預處理步驟,以提高影象的質量和處理效果。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg") # 讀取彩色影象(BGR) # 方框濾波 # 基本和均值一樣,可以選擇歸一化 img_box1 = cv2.boxFilter(img1, -1, (3, 3), normalize=True) img_box2 = cv2.boxFilter(img1, -1, (2, 2), normalize=False) cv2.imshow("box1", img_box1) # 顯示疊加影象 dst cv2.imshow("box2", img_box2) # 顯示疊加影象 dst cv2.imshow("image", img1) # 顯示疊加影象 dst cv2.waitKey(0) cv2.destroyAllWindows()
高斯濾波是影象處理中一種常用的平滑處理方法。在使用OpenCV處理影象時,高斯濾波可以用於減少影象中的噪聲和模糊不清的細節。此外,它還可以用於影象的邊緣檢測和影象分割,因為高斯濾波能夠保留影象的主要特徵,同時去除小的干擾。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg") # 讀取彩色影象(BGR) # 高斯濾波 # 高斯模糊的折積核裡的數值是滿足高斯分佈,相當於更重視中間的 img_aussian1 = cv2.GaussianBlur(img1, (5, 5), 0, 0) img_aussian2 = cv2.GaussianBlur(img1, (5, 5), 13, 13) cv2.imshow("aussian1", img_aussian1) # 顯示疊加影象 dst cv2.imshow("aussian2", img_aussian2) # 顯示疊加影象 dst cv2.imshow("image", img1) # 顯示疊加影象 dst cv2.waitKey(0) cv2.destroyAllWindows()
OpenCV 中值濾波是一種影象去噪方法,它通過在影象上選擇一個掩碼,並將其中的每個畫素與周圍畫素值進行比較,以計算該畫素的新值。新值是該畫素周圍畫素值的中位數。這樣,中值濾波能夠有效去除影象中的噪聲和椒鹽噪聲,使影象更清晰、更加穩定。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg") # 讀取彩色影象(BGR) # 中值濾波 # 相當於用中值代替 img_median1 = cv2.medianBlur(img1, 3) # 中值濾波 img_median2 = cv2.medianBlur(img1, 9) # 中值濾波 cv2.imshow("median1", img_median1) # 顯示疊加影象 dst cv2.imshow("median2", img_median2) # 顯示疊加影象 dst cv2.imshow("image", img1) # 顯示疊加影象 dst cv2.waitKey(0) cv2.destroyAllWindows()
雙邊濾波是一種影象模糊技術,它在保持影象邊緣清晰的同時,對影象中的噪聲進行有效去除。雙邊濾波演演算法通過比較影象上相鄰畫素的顏色差異和空間差異來確定每個畫素的權重,從而決定每個畫素的最終顏色值。在OpenCV中,雙邊濾波演演算法可用於處理影象的模糊、去噪、抗抖動等問題。
均值濾波、方框濾波、高斯濾波、中值濾波都是隻單純的考慮了畫素點之間的空間資訊而進行濾波的方式,這些方式都或多或少都會模糊影象的邊緣資訊,就是把影象裡面的邊緣線條弄模糊了,就是在去除影象噪音的同時把影象也弄模糊了,造成影象邊界資訊的部分丟失,這是這些方法的一個共同的缺點。
雙邊濾波就可以很好的規避這個缺點。因為雙邊濾波不僅考慮了畫素的空間資訊(距離越遠權重越小)同時還考慮了畫素的色多媒體簡訊息(色彩差別越大,權重越小),這樣就可以很好的去除噪聲還可以較好的保護邊緣資訊,所以雙邊濾波器也是一個保邊去噪的濾波器。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg") # 讀取彩色影象(BGR) img_bilateralFilter1 = cv2.bilateralFilter(img1, 15, 150, 1000) img_bilateralFilter2 = cv2.bilateralFilter(img1, 3, 255, 1000) cv2.imshow("bilateralFilter2", img_bilateralFilter2) # 顯示疊加影象 dst cv2.imshow("bilateralFilter1", img_bilateralFilter1) # 顯示疊加影象 dst cv2.imshow("image", img1) # 顯示疊加影象 dst cv2.waitKey(0) cv2.destroyAllWindows()
OpenCV 中的 2D 折積的作用是影象濾波,它可以用來消除影象中的噪聲、提取影象的特徵、邊緣檢測等。它通過對影象中的每一個畫素與一個固定的折積核進行折積操作來實現這些目的。
如果上面的均值濾波折積核、方框濾波折積核、高斯濾波折積核、中值濾波折積核、雙邊濾波折積核都不能滿足我們對影象的處理要求,此時我們就需要一個更加靈活的核——即我們自定義一個我們想要的核。如何實現呢?opencv中的cv2.filter2D()函數可以幫助我們實現:
cv2.filter2D(img, ddepth, kernel, anchor, delta, borderType)
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg") # 讀取彩色影象(BGR) kernel = np.ones((9, 9), np.float32) / 81 # 在實際中我們可以定義更復雜的折積核,以實現自定義濾波操作 img_kernel1 = cv2.filter2D(img1, -1, kernel) # 這個濾波器就相當於均值濾波 kernel = np.ones((18, 18), np.float32) / 81 # 在實際中我們可以定義更復雜的折積核,以實現自定義濾波操作 img_kernel2 = cv2.filter2D(img1, -1, kernel) # 這個濾波器就相當於均值濾波 cv2.imshow("kernel1", img_kernel1) # 顯示疊加影象 dst cv2.imshow("kernel2", img_kernel2) # 顯示疊加影象 dst cv2.imshow("image", img1) # 顯示疊加影象 dst cv2.waitKey(0) cv2.destroyAllWindows()
以上就是OpenCV實現影象平滑處理的方法彙總的詳細內容,更多關於OpenCV影象平滑處理的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45