opencv对档案图像清晰化处理

需要对泛黄的文档照片中的印章清晰化处理。我先对像素点进行筛选然后赋予新的像素值,这个方法对印章有很好的清晰效果。由于档案是泛黄的,背景像素和印章像素没有明显的差别,所以图片中除了印章的有些位置也会被赋红。之后还试了下改变对比度和亮度来处理,效果不明显。后来又试了下通道分离,发现g和b通道印章更加清晰,但是试了下均衡化处理效果还是很差。现在完全没有头绪了

(1)贴一张图片样张。
(2)对档案图像清晰化处理的目的是什么,要求是什么?只是对印章处理吗?
(3)以对印章处理为例,希望处理后的“清晰化“效果如何?“清晰化”其实是一个模糊的概念,不同的人可能会有不同的理解的。
(4)如果不做几何变换(处理变形,扭曲等问题),只是处理印章,还是要考虑“不清晰”的原因是什么。边缘模糊,空洞,背景对比度小?

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/692550
  • 以下回答由chatgpt基于相关博客总结生成:

    由于题目中提到了已经尝试了一些方法,但效果不明显,所以我将提供一种新的解决方案来处理这个问题,希望能帮到你。

    在处理泛黄的档案照片中的印章时,可以尝试以下步骤:

    步骤一: 读取图像并转换为灰度图像 使用OpenCV的cv2库,首先将档案照片读取为图像,然后将图像转换为灰度图像。代码如下:

    import cv2
    
    # 读取图像
    image = cv2.imread('archive_photo.jpg')
    
    # 转换为灰度图像
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    

    步骤二: 使用直方图均衡化增加对比度 为了增加印章的对比度,可以尝试使用直方图均衡化的方法对灰度图像进行处理。代码如下:

    # 直方图均衡化
    equalized_image = cv2.equalizeHist(gray_image)
    

    步骤三: 使用高斯滤波器去除噪声 在处理印章时,可能存在一些噪声点或者小的细节。为了去除这些噪声,可以使用高斯滤波器进行平滑处理。代码如下:

    # 高斯滤波
    blurred_image = cv2.GaussianBlur(equalized_image, (5, 5), 0)
    

    步骤四: 应用Canny边缘检测算法 由于印章通常有明显的边缘,可以尝试使用Canny边缘检测算法来突出印章的边缘。代码如下:

    # Canny边缘检测
    edges = cv2.Canny(blurred_image, 50, 150)
    

    步骤五: 使用膨胀操作增强印章的连通性 在Canny边缘检测后,印章的边缘可能会有一些断裂或者间隙。可以使用膨胀操作来增强印章的连通性。代码如下:

    # 创建膨胀核
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    
    # 膨胀操作
    dilated_edges = cv2.dilate(edges, kernel, iterations=1)
    

    步骤六: 将处理后的边缘叠加到原始图像上 为了使印章的边缘更加清晰,可以将处理后的边缘叠加到原始图像上,可以使用cv2.addWeighted()函数来实现。代码如下:

    # 叠加边缘到原图上
    result = cv2.addWeighted(image, 0.7, cv2.cvtColor(dilated_edges, cv2.COLOR_GRAY2BGR), 0.3, 0)
    

    至此,我们已经完成了对泛黄的档案照片中的印章进行清晰化处理的步骤。你可以根据自己的需求调整参数和处理过程中的细节。完整的代码如下:

    import cv2
    
    # 读取图像
    image = cv2.imread('archive_photo.jpg')
    
    # 转换为灰度图像
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 直方图均衡化
    equalized_image = cv2.equalizeHist(gray_image)
    
    # 高斯滤波
    blurred_image = cv2.GaussianBlur(equalized_image, (5, 5), 0)
    
    # Canny边缘检测
    edges = cv2.Canny(blurred_image, 50, 150)
    
    # 创建膨胀核
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    
    # 膨胀操作
    dilated_edges = cv2.dilate(edges, kernel, iterations=1)
    
    # 叠加边缘到原图上
    result = cv2.addWeighted(image, 0.7, cv2.cvtColor(dilated_edges, cv2.COLOR_GRAY2BGR), 0.3, 0)
    
    # 显示最终结果
    cv2.imshow('Result', result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    希望这个解决方案能够帮助你清晰化处理泛黄的档案照片中的印章。如有任何疑问,欢迎追问!

opencv中如何调整图像亮度和对比度
关于文字的处理的办法一般都是加对比度。
https://blog.csdn.net/tywwwww/article/details/126626804
通过改变亮度与对比度之后,
一般都可以获得识别度比较高的图像
https://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/basic_linear_transform/basic_linear_transform.html