【问题标题】:How do I fix the faded part of an image using opencv [duplicate]如何使用opencv修复图像的褪色部分[重复]
【发布时间】:2021-10-30 19:30:37
【问题描述】:

我有一张褪色方块的图片。我需要褪色的正方形恢复到可以在图像边缘看到的原始颜色。如何只处理图像的中心正方形以匹配边缘。

我尝试使用直方图均衡,但没有成功,因为差异只是增强了。

原图:

直方图均衡后:

【问题讨论】:

  • 在过去的一个月里,我们已经多次遇到过这个问题。你们都在同一个班吗?

标签: python opencv image-processing


【解决方案1】:

您可以尝试应用保边高斯过滤而不是直方图。

例如,你可以尝试双边过滤器或引导过滤器

有 OpenCV 实现,但我从未尝试过。

以下 MATLAB 代码演示了过滤器:

I = rgb2gray(im2double(imread('I.jpg')));

G = imguidedfilter(I, 'DegreeOfSmoothing', 0.005);
J = imsharpen(G, 'Amount', 2);

figure;imshow(J)

B = imbilatfilt(I);
K = imsharpen(B, 'Amount', 2);
figure;imshow(K)

如果这似乎不起作用,

尝试这种方法,使用直方图:

from matplotlib import pyplot as plt
import cv2

# Load in image as grayscale
image = cv2.imread('1.jpg', 0)

plt.hist(image.ravel(), 256, [0,256])

像素聚集在中等强度附近。为了增加图像的对比度,直方图均衡化在整个范围内拉伸强度值以获得更宽和更均匀的分布。你可以使用内置函数cv2.equalizeHist()

equalize = cv2.equalizeHist(image)
plt.hist(equalize.ravel(), 256, [0,256])

强度范围现在均匀分布。直方图均衡考虑了图像的全局对比度,当图像的直方图被限制在特定区域时效果很好。这是结果

在某些情况下,如果大区域存在强度变化,CLAHE(对比度受限自适应直方图均衡)可能会更好。 CLAHE 在 OpenCV 中实现为 cv2.createCLAHE()

clahe = cv2.createCLAHE().apply(image)
plt.hist(clahe.ravel(), 256, [0,256])

【讨论】:

  • 我按照您建议的方式使用了直方图,但是,结果如上图所示。在您提出建议后,我尝试了 clahe,但似乎直方图均衡化不适用于此类问题。如果有办法检测褪色部分,并可能使用图像数学将褪色部分与原始部分均衡,它可以解决问题
猜你喜欢
  • 2016-07-17
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2021-04-11
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多