prrsw的个人博客分享 http://blog.sciencenet.cn/u/prrsw

博文

Visual Basic与图像处理7

已有 2670 次阅读 2012-10-10 10:44 |系统分类:教学心得|关键词:学者| Visual, Basic与图像处理

Visual Basic与图像处理()

4、基于灰度直方图的灰度特征值计算

前文介绍过直接基于图像的每个像素点计算图像的均值和方差,在得到图像的灰度直方图统计以后,还可以根据直方图统计结果进行图像均值和方差的计算,这种算法效率更高,程序运行更快,尤其对于尺寸较大的图像,这种优势更为明显。算法的本质是将灰度等级相同的像素点进行归类,一次性计算出其和值,然后来计算均值和方差。本例将这种算法与前文直接根据像素点计算的方法进行比对,软件的界面如下:

从图中可以看出,两者的结果是一致的,其中基于直方图的特征计算按钮对应的代码如下:

Private Sub cmdCalFeatureBaseHist_Click()

    Dim i As Integer, j As Integer

    Dim PixelValue As Long

    Dim r As Integer, g As Integer, b As Integer

    Dim GrayValue As Integer

    Dim Hist(0 To 255) As Long

    Dim SumValue As Long

    Dim MeanValue As Single

    Dim StdValue As Single

   

   

    '直方图统计

    For i = 0 To SourceImHeight - 1

        For j = 0 To SourceImWidth - 1

               PixelValue = PicSource.Point(j, i)

               r = PixelValue Mod 256

               g = (PixelValue 256) Mod 256

               b = PixelValue 65536

              '插入图像处理的过程,对r, g, b进行处理

               GrayValue = 0.3 * r + 0.59 * g + 0.11 * b

               Hist(GrayValue) = Hist(GrayValue) + 1

        Next j

    Next i

 

  '图像均值计算

    For i = 1 To 255 '计算和值是,灰度等级为0的直接省略

        SumValue = SumValue + Hist(i) * i

    Next i

   

    MeanValue = SumValue / SourceImHeight / SourceImWidth

    MeanValue = Format(MeanValue, "0.00") '保留两位小数

    txtNewMean = Str(MeanValue)

   

    '图像标准差计算

    SumValue = 0

    For i = 0 To 255

        SumValue = SumValue + (i - MeanValue) ^ 2 * Hist(i)

    Next i

    StdValue = Sqr(SumValue / SourceImHeight / SourceImWidth)

    StdValue = Format(StdValue, "0.00") '保留两位小数

    txtNewStd = Str(StdValue)

   

End Sub

 



https://m.sciencenet.cn/blog-648901-621021.html

上一篇:Visual Basic与图像处理6
下一篇:Visual Basic与图像处理8

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-19 00:55

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部