提高图像质量

7

我需要改善图像质量,将其从低质量提高到高清晰度。我正在使用OpenCV库。我尝试了很多方法,包括GaussianBlur()、Laplacian()、变换函数、滤波函数等等,但我只能将图像转换为高清分辨率并保持相同的质量。有可能达成我的目标吗?我需要自己实现算法还是有其他方法可以做到?非常感谢任何帮助。先行致谢。


不可能的。你无法增加信息(分辨率细节)。最好的办法是猜测如何组合实际信息以提供更好质量的想法,即某种插值方法。 - Miki
您想要改善哪些方面的质量?工件?噪音?老化?方块状?这是一个非常广泛的问题,请具体说明,我们可以帮助您。 - Pervez Alam
不同颜色区域之间的过渡必须更加锐利。因此,我猜测是锐度。 - Lazar
“提高图像质量”没有绝对的意义。请要求更明确的内容。同时请注意,“The Expert”中所展示的内容纯属虚构。 - user1196549
4个回答

4

我使用了这个链接作为参考。它还有其他有趣的过滤器可以让你尝试。

如果你在使用C++:

detailEnhance(Mat src, Mat dst, float sigma_s=10, float sigma_r=0.15f)

如果您正在使用Python:
dst = cv2.detailEnhance(src, sigma_s=10, sigma_r=0.15)

变量“sigma_s”确定执行过滤所需像素邻域的大小。
变量“sigma_r”确定像素邻域内不同颜色如何相互平均。其范围为:0-1。较小的值意味着类似的颜色将被平均,而不同的颜色保持不变。
由于您正在寻找图像的清晰度,建议您尽可能保持内核最小。
这是我对样本图像获得的结果:
1.原始图像:

enter image description here

2. 当sigma_r值较低时,图像变得更加清晰:

enter image description here

3. 对于更高的sigma_r值,图像变得更加清晰:

enter image description here

请查看上述链接获取更多信息。

2
如果您尝试使用kernel=10和range=0.5,将会出现错误;请将它们作为位置参数输入,分别为10和0.5。 - sputnick567

3

在OpenCV中应用超分辨率技术如何呢?可以在这里找到一篇更详细的参考文章:https://learnopencv.com/super-resolution-in-opencv/

基本上,您需要安装Python依赖项opencv-contrib-python以及一个可工作的版本的opencv-python

在OpenCV中有不同的超分辨率技术可供选择,包括EDSR、ESPCN、FSRCNN和LapSRN等。教程文章中还包含了Python和C++的代码示例,易于查看。


2

需要进行更正 dst = cv2.detailEnhance(src, sigma_s=10, sigma_r=0.15)

使用内核将会出现错误。


0

+1 给 kris stern 的回答,

如果你正在寻找在 OpenCV 中使用预训练模型实现超分辨率的实际应用,请查看下面的笔记本以及描述详细信息的视频。

https://github.com/pankajr141/experiments/blob/master/Reasoning/ComputerVision/super_resolution_enhancing_image_quality_using_pretrained_models.ipynb

https://www.youtube.com/watch?v=JrWIYWO4bac&list=UUplf_LWNn0a9ubnKCZ-95YQ&index=4

enter image description here

以下是使用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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接