图像锐化

做法

做法很简单,就是把源图像卷积一下,托Pytorch的福,Python代码只需要几行

1
2
3
4
5
6
7
8
9
10
11
12
import torch
# 仅用于灰度图
def sharpen(image: torch.Tenser) -> torch.Tensor
kernel = torch.tensor([
[0.0, 1.0, 0.0],
[1.0, -4.0, 1.0],
[0.0, 1.0, 0.0],
]) # 高斯滤波器

filtered = torch.nn.functional.conv2d(image, kernel, padding=1)

return (image - filtered).clip(0.0, 1.0)

但是用C来做就很坐牢了,虽然可以使用Libtorch,但是C要装个外部库。。。淦

所以我想的是,要是能自己实现一个类似Libtorch这样的张量计算库,不求那么强大,能存储任意维度的张量,并且能做个2d卷积就可以了,感觉可能不是特别难。。。
然后,大失败。。。

总之,最后还是老老实实硬编码了一个3x3的卷积操作,代码非常难看就不贴出来了,不过图像锐化的效果还是挺不错的。