Skip to content

evibhm/ImageCorrection

Repository files navigation

图像边缘检测、矫正与增强锐化系统

这是一个基于 Python 和 Gradio 构建的交互式图像处理Web应用。用户可以上传图片(如包含文档、票据等),系统会自动进行边缘检测、透视矫正,并应用自适应二值化来增强图像。应用界面还提供了多个可调节参数,以便用户实时观察不同参数设置对处理结果的影响。

主要功能

  • 图像上传: 支持通过文件上传、摄像头拍摄或剪贴板粘贴的方式导入图片。
  • 边缘检测: 使用 Canny 边缘检测算法识别图像中的主要边缘。
  • 轮廓查找与筛选: 找到最大的轮廓,通常对应图像中的主要对象(如文档边缘)。
  • 透视矫正: 根据检测到的轮廓角点,对图像进行透视变换,以校正倾斜或变形的图像。
  • 自适应二值化: 对矫正后的图像应用自适应阈值处理,生成清晰的黑白二值图像。
  • 参数可调:
    • Canny 边缘检测的低阈值和高阈值。
    • 边缘膨胀操作的迭代次数。
    • 自适应阈值处理的窗口大小和 Beta 系数。
  • 实时预览:
    • Canny 边缘检测结果图。
    • 在原图上绘制检测到的轮廓图。
    • 透视矫正后的彩色效果图。
    • 最终处理的二值化结果图。
  • 界面友好: 使用 Gradio 构建,提供简洁直观的 Web 用户界面,包括滑块调节参数和示例图片加载。

如何运行

  1. 克隆/下载项目: 获取项目代码到您的本地计算机。

  2. 安装依赖: 确保您的 Python 环境中安装了必要的库。您可以使用 pip 来安装它们:

    pip install .

    或者

    pip install -r requirements.txt
  3. 运行应用: 在项目根目录下,通过命令行运行 Python 脚本 (假设脚本文件名为 app.py,请根据您的实际文件名修改):

    python app.py
  4. 访问应用: 脚本成功运行后,终端会显示一个本地 URL (通常是 http://127.0.0.1:7860 或类似的地址)。在您的网页浏览器中打开此 URL 即可开始使用该应用。

文件结构 (主要)

  • app.py (或您的主脚本文件名): 包含所有图像处理逻辑和 Gradio 界面定义的 Python 脚本。
  • examples/: (可选/自动生成) 存放示例图片的文件夹。

可调节参数详解

通过界面左侧的滑块,您可以调整以下参数:

  • Canny 低阈值 (Thresh1): Canny 算法的第一个阈值,用于边缘连接。较小的值会检测到更多较弱的边缘。
  • Canny 高阈值 (Thresh2): Canny 算法的第二个阈值,用于初步标记强边缘。建议 Thresh2 的值是 Thresh1 的 2 到 3 倍。
  • 边缘膨胀次数 (Dilation Iter.): 对检测到的边缘进行膨胀处理的次数。增加此值可以使边缘线条更粗,有助于闭合小的断裂。设置为 0 则不进行膨胀。
  • 自适应阈值窗口 (Win Size - odd): 计算局部均值时使用的邻域窗口大小。必须是奇数。窗口越大,对局部光照变化的适应性越粗略。
  • 自适应阈值 Beta (Beta Coeff.): 一个常数,从计算出的均值中减去(或乘以一个系数后比较)。调整此值可以使二值化结果整体偏亮或偏暗。

输出结果说明

应用界面右侧会以 2x2 网格的形式显示以下四个中间及最终处理结果:

  1. Canny 边缘: 经过 Canny 边缘检测算法处理后的灰度图像,显示检测到的边缘。
  2. 轮廓检测: 在调整尺寸后的原始彩色图像上,用绿色线条绘制出的面积最大的轮廓。
  3. 透视矫正图: 对原始彩色图像应用透视变换后的结果,主要对象应被校正为矩形。
  4. 最终结果: 对透视矫正图应用自适应二值化后的黑白图像。

注意事项

  • 图像处理的效果很大程度上取决于输入图像的质量和内容。
  • 对于非常复杂或低对比度的图像,可能需要仔细调整参数才能获得理想结果。
  • 如果透视变换所需的四个角点无法准确检测(例如,对象边缘不清晰或被遮挡),矫正效果可能会不佳。

About

图像边缘检测、矫正与增强锐化系统

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published