# Binarization **Repository Path**: hephec321/Binarization ## Basic Information - **Project Name**: Binarization - **Description**: 1. 什么是图像二值化? 通俗比喻: 想象你有一张灰度照片,上面有各种深浅不一的灰色。二值化就像是给这张照片做“黑白选择题”——要么是纯黑(0),要么是纯白(255)。怎么选呢?就看每个像素的“灰度值”是否超过某个“分数线”(阈值)。超过就是白,没超过就是黑。这样一来,整张图就只有黑白两种颜色,大大简化了图像,让文字或物体的轮廓更清晰,便于电脑识别(比如OCR文字识别)。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图像二值化 (Image Binarization) 学习指南 ## 1. 什么是图像二值化? **通俗比喻:** 想象你有一张灰度照片,上面有各种深浅不一的灰色。二值化就像是给这张照片做“黑白选择题”——要么是纯黑(0),要么是纯白(255)。怎么选呢?就看每个像素的“灰度值”是否超过某个“分数线”(阈值)。超过就是白,没超过就是黑。这样一来,整张图就只有黑白两种颜色,大大简化了图像,让文字或物体的轮廓更清晰,便于电脑识别(比如OCR文字识别)。 --- ## 2. 四大类二值化方法详解 ### (1) 全局阈值方法 (Global Binarization) **核心思想:** 整张图用“同一个分数线”来判断黑白。 #### 固定阈值法 (Fixed Threshold) * **原理**:直接设定一个固定的值(例如127),所有像素都跟这个值比较。 * **通俗解释**:就像全校考试,及格线统一设为60分,不管你是重点班还是普通班。 * **优缺点**:简单快速,但如果照片有的地方亮(光照好),有的地方暗(阴影),效果就会很差。 #### Otsu算法 (大津法) * **原理**:自动寻找最佳阈值。它通过统计直方图,找到一个能让“前景”和“背景”区分度最大(类间方差最大)的阈值。 * **通俗解释**:它像一个聪明的老师,通过分析全校考生的分数分布,自动算出一个最能区分优生和差生的分数线。 * **适用场景**:适合光照比较均匀,前景和背景对比明显的图像(双峰分布)。 #### 迭代法 (Iterative) * **原理**:先随机设一个阈值,然后根据分出来的两组像素的平均值不断调整,直到阈值不再变化。 * **通俗解释**:先随便定个线,然后看分出来的人平均水平怎么样,再微调分数线,直到大家都没意见。 --- ### (2) 局部阈值方法 (Local Binarization) **核心思想:** 不搞“一刀切”,每个像素参考“周围邻居”来决定自己的分数线。 #### 局部均值法 (Local Mean) * **原理**:计算像素周围一个小窗口(如15x15)内的平均值,作为该像素的阈值。 * **通俗解释**:每个班级自己定及格线。如果你比你们班平均分高,你就是优生(白),否则就是差生(黑)。 * **适用场景**:光照不均的图像。 #### Bernsen方法 * **原理**:取局部窗口内最大值和最小值的中间值作为阈值。 * **通俗解释**:看这个小圈子里最强和最弱的人,取中间值作为标准。 #### Niblack方法 * **原理**:阈值 = 局部均值 + k * 局部标准差。考虑了局部区域的波动情况。 * **通俗解释**:不仅看平均分,还看大家分数的差距大不大(标准差)。如果大家分数咬得很紧,标准就定得严一点。 * **缺点**:容易把背景里的噪点当成文字(背景噪声放大)。 #### Sauvola方法 * **原理**:对Niblack的改进,优化了标准差的计算公式。 * **优势**:专门针对文档图像优化,能很好地处理背景复杂、对比度低的古籍或文档。 --- ### (3) 基于深度学习的方法 **核心思想:** 让AI(神经网络)自己学会“怎么分黑白”。 * **原理**:使用卷积神经网络(CNN,如U-Net)进行像素级的分类。模型通过学习大量的“原图-二值图”对,掌握了从纹理、形状等复杂特征中提取前景的能力。 * **优缺点**:效果最好,能抗各种干扰(污渍、折痕),但需要大量数据训练,算力要求高。 --- ### (4) 其他方法 #### 边缘检测法 (Edge Detection) * **原理**:先找到图像的边缘(如使用Sobel算子),然后根据边缘信息来确定二值化结果。 * **通俗解释**:先把物体的轮廓勾出来,再填色。 --- ## 3. 算法对比小结 | 方法类型 | 代表算法 | 优点 | 缺点 | 适用场景 | | :--- | :--- | :--- | :--- | :--- | | **全局阈值** | Otsu, 固定阈值 | 速度极快,实现简单 | 怕光照不均,怕阴影 | 扫描件,光照均匀的简单图 | | **局部阈值** | Sauvola, Niblack | 抗光照干扰,细节好 | 计算慢,可能有噪点 | 拍照文档,阴影严重的图 | | **深度学习** | U-Net | 效果天花板,智能 | 慢,难训练,费算力 | 复杂背景,古籍修复,车牌识别 | --- ## 4. 如何使用本项目 本项目提供了一个可视化的实验平台: 1. **选择算法**:在左侧菜单选择不同的二值化算法。 2. **上传/样图**:点击“使用样图”或上传你自己的图片。 3. **调整参数**:拖动滑块调整阈值、窗口大小等参数,实时观察效果。 4. **动态演示**:点击“开始处理”,可以看到算法扫描和处理的动画过程。