当前位置: 首页 > news >正文

石家庄网络推广公司seo是免费的吗

石家庄网络推广公司,seo是免费的吗,郑州手机网站设计,成功的电子商务网站设计wiki百科 Gaussian Blur,也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。 opencv实现 opencv实现高斯滤波有两种方式, 1、是使用自带的cv2…

wiki百科

Gaussian Blur,也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。

opencv实现

opencv实现高斯滤波有两种方式,

1、是使用自带的cv2.GaussianBlur
2、自己构造高斯kernel ,然后调用cv2.filter2D函数,

方法2这个高斯kernel也可以使用opencv自带的cv2.getGaussianKernel来创建,并通过乘以转置来获得NXN的核。
以下是示例代码。

import cv2
import numpy as np
original_image = np.random.rand(256, 256, 3).astype(np.float32)# 设置高斯核大小和标准差
sigma = 0.334# 确定高斯核大小
kernel_size = int(6 * sigma + 1)  # 通常选择为 6*sigma + 1# 使用 OpenCV 进行高斯模糊,方法1
a = cv2.GaussianBlur(original_image, (0, 0), sigma)# 使用 OpenCV 进行高斯模糊,方法2
kernel = cv2.getGaussianKernel(kernel_size, sigma)
kernel = kernel * kernel.transpose()b = cv2.filter2D(original_image, -1, kernel)
print(np.abs(a - b).max())
np.allclose(a, b, atol=1e-3)

pytorch 实现

有可能在构建的网络中需要使用高斯滤波,但是又不想通过opencv实现,也可以在tensor层面对图像进行高斯滤波。也就是使用卷积的方式来实现filter
同样实现方式也有两种,

1、使用 F.conv2d的方式
2、使用nn.Conv2d ,但权重 需要固定

需要先定义高斯核,然后在采用上述两种方式来具体实现

# 定义高斯核
def gaussian_kernel(size, sigma):x = torch.arange(size, dtype=torch.float32) - size // 2kernel_1d = torch.exp(-0.5 * (x / sigma) ** 2)kernel_1d /= kernel_1d.sum()kernel_2d = torch.outer(kernel_1d, kernel_1d)return kernel_2d.unsqueeze(0).unsqueeze(0)

特别需要注意的是group 要设置为3,RGB通道分别使用高斯核,不然结果会出错。
以下是两种方法的实现。

# 方法1 F.conv2d应用高斯模糊
def apply_gaussian_blur(image, kernel_size, sigma):padding = (kernel_size - 1) // 2# 使用 ReflectionPad2d 进行填充img_torch_pad = F.pad(image, pad=(padding, padding, padding, padding), mode='reflect')kernel = gaussian_kernel(kernel_size, sigma)kernel = kernel.repeat(3, 1, 1, 1)  # 重复以匹配输入图像的通道数kernel = kernel.to(image.device)# 使用卷积操作进行高斯模糊blurred_image = F.conv2d(img_torch_pad, kernel, padding=0, groups=3)return blurred_image
# 方法2 创建带有固定高斯核的Conv2D层
class GaussianBlur(nn.Module):def __init__(self, kernel_size, sigma, in_channels=3):super(GaussianBlur, self).__init__()kernel = gaussian_kernel(kernel_size, sigma)kernel = kernel.repeat(in_channels, 1, 1, 1)  # 重复以匹配输入图像的通道数self.conv = nn.Conv2d(in_channels, in_channels, kernel_size=kernel_size, padding=0,stride=1,groups=in_channels, bias=False)self.padding = (kernel_size-1)//2self.conv.weight.data = kerneldef forward(self, x):x = F.pad(x, pad=(self.padding, self.padding, self.padding, self.padding), mode='reflect')#x = self.pad(x)return self.conv(x)

比较四种方法的差异

# 创建一个形状为 (1, 3, 256, 56) 的随机图像
original_image = np.random.rand(1, 3, 256, 56)
original_image_np = original_image[0].transpose(1, 2, 0)# 将 NumPy 数组转换为 PyTorch 张量
original_image_tensor = torch.tensor(original_image, dtype=torch.float32)# 设置高斯核大小和标准差
sigma = 0.334# 确定高斯核大小
kernel_size = int(6 * sigma + 1)  # 通常选择为 6*sigma + 1# opencv 方法1
opencv1 = cv2.GaussianBlur(original_image_np, (0, 0), sigma).transpose(2, 0, 1)[np.newaxis, ...] #根据sigma创建kernel,一般是6s +1 
# opencv 方法2
# 使用 OpenCV 进行高斯模糊,方法2
kernel = cv2.getGaussianKernel(kernel_size, sigma)
kernel = kernel * kernel.transpose()
opencv2 = cv2.filter2D(original_image_np, -1, kernel).transpose(2, 0, 1)[np.newaxis, ...]
# torch 方法1
torch1 = apply_gaussian_blur(original_image_tensor, kernel_size, sigma).numpy()
# torch 方法2
blur_layer = GaussianBlur(kernel_size, sigma)
torch2  = blur_layer(original_image_tensor).detach().numpy()def all_arrays_close(*arrays):reference = arrays[0]for array in arrays[1:]:if not np.allclose(reference, array,rtol=1e-5, atol=1e-8):return Falsereturn Trueif all_arrays_close(opencv1, opencv2, torch1, torch2):print("All arrays are close to each other.")
else:print("Arrays are not close to each other.")

输出
在这里插入图片描述
说明四种方法是等价的。

http://www.yayakq.cn/news/818100/

相关文章:

  • 成都网站推广多少钱瑞安外贸网站制作
  • 做电工的有接单的网站吗沈阳鹊起网站建设公司
  • 网站公司动态做不了怎么办网站建设技术进行开发
  • 网站备案号怎么添加甘肃网络科技有限公司
  • 网站建设忄金手指稳定wordpress参考文档
  • 网站制作需要多少钱?织梦cms做网站
  • 甘肃肃第八建设集团网站1收费的网站如何免费
  • 网站做百度推广划算吗服务器搭建网站软件
  • 自己在公司上班做网站宣传 侵权吗企业文化墙设计图
  • 网站建设写代码自己怎么创业建设通怎么查有无在建
  • 凡科建站官网 网络服务发布培训的免费网站模板
  • 江苏省住房城乡建设厅网站首页专业做室内设计的网站有哪些方面
  • 木制家具东莞网站建设网站开发 自动填写表单
  • 莞城营销型网站建设用新华做网站名是否侵权
  • 南平企业网站建设响应式网站用什么工具
  • 网站建设用的是什么软件创世网络网站建设
  • 南通网站制作系统做网站业务员怎么查找客户
  • 2002年网站建设公司软件开发公司
  • 宁波市江北区建设局网站做招聘网站价格
  • 建设部 招投标网站官方网站建立
  • 有免费制作单页的网站吗中英双语网站建设
  • 如何制作餐馆网站网页设计期末作业源码
  • 北京市建设工程质量监督网站一起做网站注册地址
  • 九江建站公司绍兴网站seo
  • 麓谷做网站的公司汕头网站建设浩森宇特
  • 沧州专业网站建设公司昆明做网站找天度
  • 济南行知网站建设有限公司怎么样网站开发有哪些方式
  • 网站备案找谁大搜推广
  • 电商网站 设计信息流优化
  • 铁建设文件在什么网站下载福州企业宣传片制作公司