OpenCV+Python图像滤波(平滑)+ 金字塔思想

图像处理中的滤波一般用于消除噪声,增强图像。

图像卷积(滤波)

数字图像是一个二维的离散信号,对数字图像做卷积操作其实就是利用卷积核(卷积模板)在图像上滑动,将图像点上的像素灰度值与对应的卷积核上的数值相乘,然后将所有相乘后的值相加作为卷积核中间像素对应的图像上像素的灰度值,并最终滑动完所有图像的过程。

dst = cv2.filter2D(img, ddepth, kernel)
# img为原图像
# ddepth是目标图像的图像深度,如CV_8U, CV_16U/CV_16S, CV_32F, CV_64F
#   -1表示与原图像深度一致。目标图像的深度必须大于等于原图像
# kernel 卷积核
实例
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('../laugh.jpg', 0)

kernel = np.ones((5, 5), np.float32) / 25
dst = cv2.filter2D(img, -1, kernel)

plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(dst, cmap='gray'), plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()
平均滤波

图像平滑(图像模糊)

图像平滑主要用的是低通滤波器,用于降噪,过滤图像中的高频信息,比如边界。OpenCV中实现了多种常用的低通滤波器。

平均滤波

dst = cv2.blur(img, kernel_size)
# 如(3,3)表示 [[1,1,1],[1,1,1],[1,1,1]]/9 的卷积核

高斯滤波

dst = cv2.GaussianBlur(img, kernel_size, sigma_X, sigma_Y=None, borderType=None)
# sigma_X 高斯卷积和在X方向上的标准差。
# sigma_Y的默认值表示与sigma_X相同
# 若sigma设为0, 会使用这个公式计算sigma: 0.3*((kernel_size-1)*0.5 - 1) + 0.8
# borderType 边缘扩展点插值类型,见cv2.BORDER_*

高斯函数

模拟人眼,关注中心区域,标准差\sigma越大,关注的区域越大,中心权重越低

卷积核可以拆分,减少计算量

中值滤波

去除椒盐噪声

dst = cv2.medianBlur(img, ksize)
# ksize必须是大于1的奇数

双边滤波(Bilateral Filter)

作用:过滤噪声的同时,保留边缘信息

  • 双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。
  • 双边滤波的权重不仅考虑了像素的欧氏距离(如普通的高斯低通滤波,只考虑了位置对中心像素的影响),还考虑了像素范围域中的辐射差异(例如卷积核中像素与中心像素之间相似程度、颜色强度,深度距离等),在计算中心像素的时候同时考虑这两个权重。
cv2.bilateralFilter(src, d, sigma_color, sigma_space)
# d 表示在过滤过程中每个像素邻域的直径范围。如果这个值是非正数,则函数会根据sigma_space计算该值。 
# sigma_color 颜色空间过滤器的sigma值
#       这个参数的值越大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
# sigma_space  坐标空间中滤波器的sigma值
#       如果该值较大,则意味着颜色相近的较远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。
#       当d>0时,d指定了邻域大小且与sigma_space无关,否则d正比于sigmaSpace。
# d越大,算法耗时越长

对于彩色图片,由于两种颜色中可能有其他完全不同的颜色,因此不像灰度图那样,仅仅是 blurred ,而是会产生 auras like 的奇怪的晕圈,所以在双边滤波的过程中,将RGB转换到 CIE-Lab 色彩空间,这个空间与人的主管色彩辨识能力相关,因此可以改善这一缺陷。

效果
import cv2
from matplotlib import pyplot as plt
# 以GBR颜色模型导入图像
img = cv2.imread('laugh.jpg')
# pyplot绘图时,彩色图像的信道顺序与opencv的不同,所以为了正常显示,必须改变颜色信道的顺序
b, g, r = cv2.split(img)
img = cv2.merge((r, g, b))

cv2.imshow("original", img)
dst1 = cv2.blur(img, (21, 21))
dst2 = cv2.GaussianBlur(img, (21, 21), 0)
dst3 = cv2.medianBlur(img, 21)
dst4 = cv2.bilateralFilter(img, 21, 75, 75)
titles = ["Original", "blur", "gaussian", "median", "bilateral"]
imgs = [img, dst1, dst2, dst3, dst4]
for i in range(5):
    plt.subplot(3, 2, i + 1), plt.imshow(imgs[i]), plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
多种平滑滤波效果对比图

金字塔

降采样

金字塔其实就是降采样,但是直接降采样会损失信息,需要配合高斯滤波


原图、直接降采样、高斯+降采样
尺度空间

不同尺度适合不同尺寸的物体,合适的尺度永远未知。

拉普拉斯金字塔

高频细节在采样过程中被丢失,拉普拉斯金字塔会保留所有层所丢失的高频信息,用于图像恢复

中间一层就是保留的丢失的高频信息

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

推荐阅读更多精彩内容