我需要改善图像质量,将其从低质量提高到高清晰度。我正在使用OpenCV库。我尝试了很多方法,包括GaussianBlur()、Laplacian()、变换函数、滤波函数等等,但我只能将图像转换为高清分辨率并保持相同的质量。有可能达成我的目标吗?我需要自己实现算法还是有其他方法可以做到?非常感谢任何帮助。先行致谢。
我需要改善图像质量,将其从低质量提高到高清晰度。我正在使用OpenCV库。我尝试了很多方法,包括GaussianBlur()、Laplacian()、变换函数、滤波函数等等,但我只能将图像转换为高清分辨率并保持相同的质量。有可能达成我的目标吗?我需要自己实现算法还是有其他方法可以做到?非常感谢任何帮助。先行致谢。
我使用了这个链接作为参考。它还有其他有趣的过滤器可以让你尝试。
如果你在使用C++:
detailEnhance(Mat src, Mat dst, float sigma_s=10, float sigma_r=0.15f)
dst = cv2.detailEnhance(src, sigma_s=10, sigma_r=0.15)
2. 当sigma_r
值较低时,图像变得更加清晰:
3. 对于更高的sigma_r
值,图像变得更加清晰:
在OpenCV中应用超分辨率技术如何呢?可以在这里找到一篇更详细的参考文章:https://learnopencv.com/super-resolution-in-opencv/
基本上,您需要安装Python依赖项opencv-contrib-python
以及一个可工作的版本的opencv-python
。
在OpenCV中有不同的超分辨率技术可供选择,包括EDSR、ESPCN、FSRCNN和LapSRN等。教程文章中还包含了Python和C++的代码示例,易于查看。
需要进行更正 dst = cv2.detailEnhance(src, sigma_s=10, sigma_r=0.15)
使用内核将会出现错误。
+1 给 kris stern 的回答,
如果你正在寻找在 OpenCV 中使用预训练模型实现超分辨率的实际应用,请查看下面的笔记本以及描述详细信息的视频。
https://www.youtube.com/watch?v=JrWIYWO4bac&list=UUplf_LWNn0a9ubnKCZ-95YQ&index=4
以下是使用OpenCV的示例代码
model_pretrained = cv2.dnn_superres.DnnSuperResImpl_create()
# setting up the model initialization
model_pretrained.readModel(filemodel_filepath)
model_pretrained.setModel(modelname, scale)
# prediction or upscaling
img_upscaled = model_pretrained.upsample(img_small)