- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试了解调整图像大小的简单算法的工作原理。
我已经实现了双线性和双三次插值方法,它们在用于放大图像时都能完美地工作。但是,如果我使用相同的方法进行缩小(比方说原始方法的 0.25 倍),图像就会开始丢失微小的细节。
例如(电线不再是直线了):
我明白是什么导致了这种影响。所以我的问题是如何解决?我的意思是,如果我在不同的软件中使用相同的算法,最终图像在这种类型的细节(在我的例子中 - 电线)上不会有那种失真。
到目前为止,我找到的唯一解决方案是逐步缩小图像,每一步不超过其原始大小的 10-20%,但这当然要慢得多。
感谢您的关注。
最佳答案
有趣的是,很少有关于图像处理的教科书警告过这一点:对于下采样,插值既过分又不合适。不合适,因为根据香农定理,您不应该在奈奎斯特频率以下进行采样,否则会产生令人讨厌的混叠效果。矫枉过正,因为当像素很小时,亚像素精度毫无用处。
获取正确结果的方法有两种:
低通滤波(模糊)然后抽取,
平均像素 block 。
从计算的角度来看,后者效率更高,但灵 active 稍差。
关于image - 使用双线性和双三次算法缩小图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879466/
我注意到,在 openCV 中使用双三次插值对矩阵进行下采样时,即使原始矩阵都是正值,我也会得到负值。 我附上下面的代码作为例子: // Declaration of variables cv::Ma
有人可以指点我一个教程,其中解释了如何使用 libpng 和 png++ 对图像应用双三次调整大小吗?我花了将近三个小时找东西,但找不到。可能是因为我不知道去哪里找。 图像 ( 48 bit imag
我是一名优秀的程序员,十分优秀!