Torch中值滤波、Median blurring

中值滤波、Median blurring

原始中值滤波


Opencv

代码如下(示例):

import cv2

img = cv2.imread('img.jpg')

# Median blurring
med = cv2.medianBlur(img,5)
cv2.imshow('Media Blurring', med)
cv2.waitKey(0)

循环(耗时)

代码如下(示例):

   
def median_blur(image, kernel_size=3):
    # 确保输入图像是一个3D张量 (channels, height, width)
    image=image.squeeze(0)
    assert len(image.shape) == 3, "Input image must be a 3D tensor" 
    # 在图像边界补零
    padding = kernel_size // 2
    padded_image = F.pad(image, (padding, padding, padding, padding)
    # 获取图像的尺寸
    channels, height, width = image.shape
    # 创建一个用于存储中值结果的张量
    median_image = torch.zeros_like(image)
    for h in range(height):
        for w in range(width):
            # 提取邻域窗口
            window_0 = padded_image[0, h:h+kernel_size, w:w+kernel_size]
            median_image[0, h, w] = window_0.flatten().median()

            window_1 = padded_image[1, h:h+kernel_size, w:w+kernel_size]
            median_image[1, h, w] = window_1.flatten().median()

            window_2 = padded_image[2, h:h+kernel_size, w:w+kernel_size]
            median_image[2, h, w] = window_2.flatten().median()
    
    median_image=quantization(median_image.unsqueeze(0))
    return median_image

Torch.tensor

代码如下(示例):

class MedianBlur(torch.nn.Module):
    def __init__(self, kernel_size):
        super().__init__()
        # self.random = True
        self.kernel = kernel_size

    def forward(self, img, _=None):
        img_blurred = kornia.filters.median_blur(img, (self.kernel, self.kernel))
        img_blurred=quantization(img_blurred)
        return img_blurred
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值