【.NET 关于图像处理】Threshold.vb (图像二值化)
效率比较低的方法,如果是验证码识别可以用

有通过HSL中的H来二值化和L来二值化两种,value

ifbmp 表示是否输出bitmap类

怎么改成数组输出的自己看着办


Public Class Threshold
    Dim pic(,) As Long
    Public Function ScanTo2_L(ByVal width As Long, ByVal height As Long, ByVal bIn As Bitmap, ByVal value As Double, ByVal ifbmp As Boolean) As Bitmap
        ReDim pic(width, height)
        Const ByN As Integer = 256
        Const ByN2 As Long = 65536
        Dim i, j As Long
        Dim color1 As Long
        For i = 0 To width - 1
            For j = 0 To height - 1
                color1 = bIn.GetPixel(i, j).ToArgb + 16777216
                If RGB2L((color1 Mod ByN), ((color1 Mod ByN2) \ ByN), (color1 \ ByN2)) < value Then
                    If ifbmp Then bIn.SetPixel(i, j, Color.Black)
                    pic(i, j) = 1
                Else
                    If ifbmp Then bIn.SetPixel(i, j, Color.White)
                    pic(i, j) = 0
                End If
            Next
        Next

        If Ifbmp Then Return bIn Else Return Nothing

    End Function

    Public Function ScanTo2_H(ByVal width As Long, ByVal height As Long, ByVal bIn As Bitmap, ByVal value As Double, ByVal Ifbmp As Boolean) As Bitmap
        ReDim pic(width + 1, height + 1)
        Const ByN As Integer = 256
        Const ByN2 As Long = 65536
        Dim i, j As Long
        Dim color1 As Long
        For i = 0 To width - 1
            For j = 0 To height - 1
                color1 = bIn.GetPixel(i, j).ToArgb + 16777216
                If RGB2L((color1 Mod ByN), ((color1 Mod ByN2) \ ByN), (color1 \ ByN2)) < value Then
                    If Ifbmp Then bIn.SetPixel(i, j, Color.Black)
                    pic(i, j) = 1
                Else
                    If Ifbmp Then bIn.SetPixel(i, j, Color.White)
                    pic(i, j) = 0
                End If
            Next
        Next
        If Ifbmp Then Return bIn Else Return Nothing
    End Function
    Public Function Min(ByVal a As Double, ByVal b As Double) As Double
        If a < b Then
            Return a
        Else
            Return b
        End If
    End Function

    Public Function Max(ByVal a As Double, ByVal b As Double) As Double
        If a > b Then
            Return a
        Else
            Return b
        End If
    End Function

    Public Function RGB2H(ByVal r As Double, ByVal g As Double, ByVal b As Double) As Double
        Dim mi, ma As Double
        Dim del_r, del_g, del_b, del_max As Double
        Dim h As Double

        r = r / 255
        g = g / 255
        b = b / 255

        mi = Min(r, Min(g, b))
        ma = Max(r, Max(g, b))
        del_max = ma - mi

        If del_max = 0 Then
            h = 0
        Else
            del_r = ((ma - r / 6.0) + (del_max / 2.0)) / del_max
            del_g = ((ma - g / 6.0) + (del_max / 2.0)) / del_max
            del_b = ((ma - b / 6.0) + (del_max / 2.0)) / del_max

            If r = ma Then
                h = del_b - del_g
            Else
                If g = ma Then
                    h = (1.0 / 3.0) + del_r - del_b
                Else
                    If b = ma Then
                        h = (2.0 / 3.0) + del_g - del_r
                    End If
                End If
            End If

            If h < 0 Then h = h + 1
            If h > 1 Then h = h - 1

        End If
        Return h
    End Function

    Public Function RGB2L(ByVal r As Double, ByVal g As Double, ByVal b As Double) As Double
        Dim mi, ma As Double

        Dim l As Double

        r = r / 255
        g = g / 255
        b = b / 255

        mi = Min(r, Min(g, b))
        ma = Max(r, Max(g, b))
        l = (ma + mi) / 2
        Return l
    End Function
End Class




attachment icon Threshold.rar 1.00KB RAR 11次下载
+200  科创币    novakon   2009-07-27    belle
来自:计算机科学 / 软件综合
93° 作者
12年0个月前
1楼
哇靠 。。。你们这群。。。真的无视我啊 = =
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
finalapple
12年0个月前
2楼
额。。。还是支持你一下吧
不过这么长的代码咱消化不了啊。。。= = [s:94]  [s:94]  [s:94]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
12年0个月前
3楼
消化不了……信不信我把BP网络的代码贴上来…… 被pia飞
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
finalapple
12年0个月前
4楼
啊~~~~~~~~不要·····你这不是要我小命吗= = [s:247]  [s:94]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
acmilan
12年0个月前
5楼
刚看见标题,以为你们在分析Thumbs.db...把我雷进来了...一近来才知道...
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
93°
学者 笔友
文章
651
回复
6032
学术分
30
2007/04/10注册,3 年前活动
暂无简介
%7B%22isDisplay%22%3Atrue%7D

仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
学术分隐藏
{{submitted?"":"投诉或举报"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png
插入公式
分享回复:{{shareId}}
加载中...
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
加入关注取消关注
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
建议修改
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
下载资料
{{fileName}}
大小:{{size}}
下载当前附件将花费 {{costMessage}}
{{description}}
你当前剩余 {{holdMessage}}
{{fileName}}
大小:{{size}}
当前附件免费。
你已购买过此附件,下载当前附件不需要花费积分。
加载中...
{{errorInfo}}
附件已丢失
当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}