# 图像处理: 设计 动态高斯滤波

## Idea

opencv 中 有个实现 高斯滤波 的接口，如下：

cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

size = int(k1*x + k2*y + b) * 2 + 1

Note : 注意保证 输出结果 为 整型奇数，因为 参数 ksize接受 整型奇数输入。

k1,k2,b=⎧⎩⎨⎪⎪0,0.012,00.009,0,00.0053,0.0053,0垂直高斯;水平高斯;对角高斯.

k1, k2, b=\left\{\begin{array}{ll}0, 0.012, 0 &\mbox{垂直高斯;}\\0.009, 0, 0 &\mbox{水平高斯;}\\0.0053, 0.0053, 0 &\mbox{对角高斯.}\end{array}\right.

## Code

# 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"
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()

0 条评论

• ### leetcode: 37. Sudoku Solver

…and its solution numbers marked in red.

• ### Spring Cloud Config服务端配置细节(二)之加密解密

在微服务架构中，由于独立的服务个数众多，加上前期测试工作量大，一些原本由运维人员维护的敏感信息会被我们直接写在微服务中，以提高开发效率，但是这种明文存储方式显然...

• ### SpringMVC接收数组

后台写@RequestParam("img_array[]") String[] img_array

• ### CSS中字体相关的小技巧

你是否早已厌倦了司空见惯的Helvetica字体？想让你的网页别有一番趣味？或是想避免和同事讨论这些琐事？那么我想你需要看看下面这些代码。在项目中添加这样一小块...

前两天转了章大的zeppelin系列教程（以下简称“教程”），我也好好的研究学习了一波。

• ### 如何校验 Debian 软件包的 MD5

你有没有想过为什么安装在你系统上的某个二进制文件或软件包没有按预期的那样来运行，或者说没有按正常的方式来运行，也许它根本就无法启动。

• ### pandas：数据离散化与离散化数据的后期处理(one-hot)

对于某些机器学习算法来说，像决策树、随机森林、朴素贝叶斯。他们的数据集大多数都是针对的离散型数据。因此做出有效的数据离散化，对于降低计算复杂度和提高算法准确...