图像处理:设计动态高斯滤波
创作时间:
作者:
@小白创作中心
图像处理:设计动态高斯滤波
引用
CSDN
1.
https://blog.csdn.net/JNingWei/article/details/79137301
Idea
OpenCV中有一个实现高斯滤波的接口,如下:
cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)
在项目过程中,发现如果根据像素点相对整张图片的位置设计不同的滤波核大小(即参数ksize),就可以灵活地对整张图片实现动态高斯滤波。具体滤波核大小计算公式如下:
size = int(k1*x + k2*y + b) * 2 + 1
Note :注意保证输出结果为整型奇数,因为参数ksize只接受整型奇数输入。
由于图片大小是600×424×3,所以k1,k2,b的取值如下:
Demo
原图像:
水平动态高斯滤波:
垂直动态高斯滤波:
Code
以下代码中,关于“对角动态高斯滤波(diagonal gaussian)”的代码段有问题,所以被注释掉了。因为不能对单元素单独进行高斯滤波,所以会报错。具体该怎么解决,我也一时没想到。
# coding=utf-8
import numpy as np
import cv2
def kernel_size(x, y, type):
if type == "vertical":
k1, k2, b = 0, 0.012, 0
elif type == "horizontal":
k1, k2, b = 0.009, 0, 0
elif type == "diagonal":
k1, k2, b = 0.0053, 0.0053, 0
else:
k1, k2, b = 0, 0, 11
size = int(k1*x + k2*y + b) * 2 + 1
return size
def range_limit(img):
img *= (img>0)
img = img * (img<=255) + 255 * (img>255)
img = img.astype(np.uint8)
return img
def dynamic_gaussian(img):
h, w, c = np.shape(img)
sigma = 2
# gs_v: vertical gaussian, 垂直高斯
# gs_h: horizontal gaussian, 水平高斯
# gs_d: diagonal gaussian, 对角高斯
gs_v, gs_h, gs_d = img.copy(), img.copy(), img.copy()
for i in range(h):
k_size = kernel_size(w, i, "vertical")
gs_v[i, :, :] = cv2.GaussianBlur(gs_v[i, :, :], (k_size, k_size), sigma)
print(i, k_size)
for j in range(w):
k_size = kernel_size(j, h, "horizontal")
gs_h[:, j, :] = cv2.GaussianBlur(gs_h[:, j, :], (k_size, k_size), sigma)
print(j, k_size)
# # 报错:
# for i in range(h):
# for j in range(w):
# k_size = kernel_size(i, j, "diagonal")
# gs_d[i, j, :] = cv2.GaussianBlur(gs_d[i, j, :], (k_size, k_size), sigma)
# print(i, j, k_size)
return gs_v, gs_h, gs_d
def main():
img_path = "./girl.jpg"
img = cv2.imread(img_path)
gs_v, gs_h, gs_d = dynamic_gaussian(img)
cv2.imwrite("./gs_v.jpg", gs_v)
cv2.imwrite("./gs_h.jpg", gs_h)
cv2.imwrite("./gs_d.jpg", gs_d)
if __name__ == "__main__":
main()
本文原文来自CSDN
热门推荐
想成为乒乓球高手?先学会这5种发球抢攻
明末兵变与明朝灭亡:历史背景与深层次原因
高密度影和低密度影是什么意思
解锁婚礼西装定制奥秘:深度解析选材、剪裁与设计,塑造绅士风范
有机物的官能团鉴定实验方法研究
C语言指针基础教程:从概念到实战
业务员薪资计算系统如何处理阶梯提成方案
俄罗斯和清朝的领土扩张竞赛:持续了200多年的波澜壮阔史诗
珞珈系列卫星: 让你像“玩微信”一样“玩卫星”
匈牙利既然支持俄罗斯,为何不退出北约和欧盟,选择加入集安组织
《天国:拯救2》:一部关于复仇与宽恕的中世纪史诗
企业如何应对关税政策:营销策略的调整与优化
尼克·胡哲没有四肢的人生励志故事
尼克·胡哲没有四肢的人生励志故事
天津公立学校转国际学校有哪些学校可以选择?
私营单位工资大透视:哪些行业和省份增速最快?|2024民企大调研③
桂林象鼻山:不只是像鼻子!探索桂林象鼻山的独特魅力
绝缘材料介电强度测试仪应用原理及使用方法详解
从速溶到美学:咖啡潮的前世今生
机器人“抢饭碗”?深度剖析自动化技术对工作岗位影响的复杂现实
RSI 是什麼?RSI 怎麼看?RSI 指標教學!
亚冠前瞻:利雅得胜利主场迎战赖扬,多哈萨德力拼德黑兰独立
银河麒麟服务器磁盘分区策略详解
深入了解标准预防:预防医院感染的关键策略
Grasshopper系列教程:树状数据结构的处理(拍平和分组)
焊接贴片电容、电阻、二极管和三极管全总结
如何确保半导体清洗材料不会对半导体芯片电路造成物理损伤?
优质科技资源向石家庄加速汇聚 ——京津冀协同发展迸发创新活力
笔记本防中暑指南:教你给笔记本清灰
《荒野国度》初期游戏攻略:队伍发展、领地扩张与阵营玩法全解析