opencv入门10:平滑和模糊-SMOOTHING AND BLURRING

blurring:图像中的每个像素都与其周围的像素强度混合在一起。这个邻域像素的“混合”成为我们模糊的像素。

事实上,如果图像首先被平滑或模糊,许多图像处理和计算机视觉功能,如阈值和边缘检测,性能会更好。

一、平均-averaging

我们要探索的第一个模糊方法是平均,
为了平均模糊图像,我们使用
cv2.blur(image,kernel)

  • image是我们希望模糊的图片
  • kernel 希望模糊的颗粒度值
import numpy as np 
import argparse
import cv2

ap = argparse.ArgumentParser()
ap.add_argument("-i","--image",required =True, help="Path to the image")
args = vars(ap.parse_args())

image = cv2.imread(args["image"])
cv2.imshow("Original",image)

blurred =  np.hstack([cv2.blur(image,(3,3)),cv2.blur(image,(5,5)),cv2.blur(image,(7,7))])
cv2.imshow("Averaged",blurred)
cv2.waitKey(0)
image

二、高斯-gaussian

高斯模糊与平均模糊相似,但是不是使用简单的均值,而是使用加权平均值,其中靠近中心像素的邻近像素对平均值贡献更多的“权重”。
最终的结果是我们的图像比使用上一节中讨论的平均方法更不明显,但更自然地模糊了。

blurred =  np.hstack([cv2.GaussianBlur(image,(3,3),0),cv2.GaussianBlur(image,(5,5),0),cv2.GaussianBlur(image,(7,7),0)])
# cv2.GaussianBlur(image,(3,3),0)
#需要指定高斯核的宽和高(必须是奇数)。以及高斯函数沿X,Y 方向的标准
#差。如果我们只指定了X 方向的的标准差,Y 方向也会取相同值
# 0 是指根据窗口大小(3,3)来计算高斯函数标准差
# 最后一个参数是在x轴方向上的标准偏差。通过设置这个值为0,我们正在指示OpenCV根据我们的内核大小自动计算它们
cv2.imshow("Gaussian",blurred)
cv2.waitKey(0)
图·2

三、中值模糊

传统上,中值模糊方法在去除椒盐噪声时效果最好,
这种噪音听起来就像是想象一样:想象一下把照片放在餐桌上,然后撒上盐和胡椒。使用中值模糊方法,您可以从图像中去除盐和胡椒粉。

当应用中值模糊时,我们首先定义我们的内核大小k。然后,如在平均模糊方法中,我们考虑大小为k * k的邻域中的所有像素。但是,与平均方法不同,不是用邻域的平均值替换中心像素,而是用邻域的中值代替中心像素。(When applying a median blur, we first define our kernel size k. Then, as in the averaging blurring method, we consider all pixels in the neighborhood of size k x k. But, unlike the averaging method, instead of replacing the central pixel with the average of the neighborhood, we instead replace the central pixel with the median of the neighborhood.)

平均和高斯方法可以计算邻域的平均值或加权平均值-这个平均像素强度可能存在或不存在于邻域中。但是根据定义,中值像素必须存在于我们的邻域中。通过用中位数而不是平均数来代替我们的中心像素,我们可以大大降低噪声(Averaging and Gaussian methods can compute means or weighted means for the neighborhood – this average pixel intensity may or may not be present in the neighborhood. But by definition, the median pixel must exist in our neighborhood. By replacing our central pixel with a median rather than an average, we can substantially reduce noise.)

使用 cv2.medianBlur(image,kernel) 方法进行中值模糊
内核大小k

blurred =  np.hstack([cv2.medianBlur(image,3),cv2.medianBlur(image,5),cv2.medianBlur(image,7)])
# 前面的滤波器都是用计算得到的一个新值来取代中
# 心像素的值,而中值滤波是用中心像素周围(也可以使他本身)的值来取代他。
# 他能有效的去除噪声。卷积核的大小也应该是一个奇数。
cv2.imshow("Median",blurred)
cv2.waitKey(0)
图·3

四、双边滤波-bilateral

到目前为止,我们的模糊方法的目的是降低图像中的噪声和细节;但是,我们往往会失去图像的边缘。
函数cv2.bilateralFilter() 能在保持边界清晰的情况下有效的去除噪音。
但是这种操作与其他滤波器相比会比较慢。我们已经知道高斯滤波器是求中心点邻近区域像素的高斯加权平均值。这种高斯滤波器只考虑像素之间的空间关系,而不会考虑像素值之间的关系(像素的相似度)。所以这种方法不会考虑一个像素是否位于边界。因此边界也会别模糊掉,而这正不是我们想要。双边滤波在同时使用空间高斯权重和灰度值相似性高斯权重。空间高斯函数确保只有邻近区域的像素对中心点有影响,灰度值相似性高斯函数确保只有与中心像素灰度值相近的才会被用来做模糊运算。所以这种方法会确保边界不会被模糊掉,因为边界处的灰度值变化比较大。

blurred =  np.hstack([cv2.bilateralFilter(image,5,21,21),cv2.bilateralFilter(image,7,31,31),cv2.bilateralFilter(image,9,41,41)])
#cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)
#d – Diameter of each pixel neighborhood that is used during filtering.
# If it is non-positive, it is computed from sigmaSpace
#5 邻域直径,两个21 分别是空间高斯函数标准差,灰度值相似性高斯函数标准差

# 第三个参数是我们的颜色标准差。颜色标准差值越大意味着在计算模糊时将考虑邻域中更多的颜色。
# 最后,我们需要提供空间标准差。空间标准差值越大意味着离中心像素越远的像素也会影响模糊计算,只要它们的颜色足够相似即可。
cv2.imshow("Median",blurred)
cv2.waitKey(0)
图·4

在机会的世界里,没有太多机会可以争取;如果你真想成功,要设法抢夺别人的机会。
更多文章请关注我的博客:https://harveyyeung.github.io

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容