下你所需,载你所想!
汇集开发技术源码资料

效果超好的局部二值化源码,图片有阴影也不怕

:33.304KB :1 :2019-12-30 06:59:55

部分简介

单纯的局部二值化,当阴影区域过大时,二值化的效果也没有那么完美,所以小小改动了一下,看起来效果还不错,大家可以拿各种图片试试。

受到光线阴影而影响到降低均值的图片,部分阴影区域的像素点会比均值低,所以可能会在阴影区域出现死黑的区域,所以单一的取均值来二值化是不够完美的。

.如果真 (是否为空 (局部范围))
局部范围 = 9
.如果真结束
位图.载入数据 (图片)
处理事件 ()
调试输出 (取现行时间 ())
重定义数组 (图片数据, 假, 位图.取高度 (), 位图.取宽度 ())
.计次循环首 (位图.取高度 (), y)
.计次循环首 (位图.取宽度 (), x)
RGB = 到字节集 (位图.取某点颜色 (x - 1, y - 1))
颜色值 = (RGB [1] × 30 + RGB [2] × 59 + RGB [3] × 11) ÷ 100
图片数据 [y] [x] = 颜色值
.计次循环尾 ()
.计次循环尾 ()
调试输出 (取现行时间 ())
.计次循环首 (位图.取高度 (), y)
.计次循环首 (位图.取宽度 (), x)
颜色总值 = 0
.计次循环首 (局部范围 × 2 + 1, i)
.如果真 (y + i - 局部范围 - 1 > 0 且 y + i - 局部范围 - 1 < 位图.取高度 () + 1)
.计次循环首 (局部范围 × 2 + 1, c)
.如果真 (x + i - 局部范围 - 1 > 0 且 x + i - 局部范围 - 1 < 位图.取宽度 () + 1)
颜色总值 = 颜色总值 + 图片数据 [y + i - 局部范围 - 1] [x + i - 局部范围 - 1]
阈值点数 = 阈值点数 + 1
.如果真结束

.计次循环尾 ()
.如果真结束

.计次循环尾 ()
.如果 (颜色总值 ÷ 阈值点数 × 0.9 < 图片数据 [y] [x])
位图.置某点颜色 (x - 1, y - 1, #白色)
.否则
位图.置某点颜色 (x - 1, y - 1, #黑色)
.如果结束
阈值点数 = 0
.计次循环尾 ()
.计次循环尾 ()
调试输出 (取现行时间 ())
返回 (位图.取位图数据 ())

算法的应用于文本图像二值化领域较多,算是比较经典的局部二值化处理方法,其局部二值化方法的提出也很有借鉴意义,包括后来的一些对其改进方法,Sauvola 算法、Nick 算法,核心思想是:根据图像像素点的邻域内的平均灰度和标准偏差来构造一个阈值曲面进行二值化处理。

效果超好的局部二值化源码,图片有阴影也不怕

热门推荐

相关文章