⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageprocessinghelper.vb

📁 neural networks applications
💻 VB
字号:
'------------------------------------------------------------------
' License Notice:
'------------------------------------------------------------------
' All Rights Reserved - Anoop Madhusudanan, 
' Mail: amazedsaint@gmail.com
' Website: http://amazedsaint.blogspot.com

' See my articles about BrainNet at 
' http://amazedsaint-articles.blogspot.com for details
'
' You can use this code (or part of it), for non 
' commercial and academic uses, as long as 
'   - You are keeping this notice along with it
'   - You are not making any profit out of this
'------------------------------------------------------------------

'''<summary> The class provides some basic image processing methods
'''and conversions required for neural network image processing  </summary>

Public Class ImageProcessingHelper

    ''' <summary> Convert a color image to monochrome </summary>
    Public Function ImageToMonochrome(ByVal img As Image) As Image
        ''' Get the source Bitmap.
        Dim bmp As New Bitmap(img)
        Dim hgt, wid As Long

        hgt = bmp.Height
        wid = bmp.Width


        Dim i, j, counter As Integer

        counter = 0
        Dim r, g, b As Integer
        For i = 0 To hgt - 1
            For j = 0 To wid - 1

                r = bmp.GetPixel(i, j).R
                g = bmp.GetPixel(i, j).G
                b = bmp.GetPixel(i, j).B
                Dim colorval As Single = (r + g + b) / 3
                Dim col As New Color()
                If colorval > 255 / 2 Then
                    col = Color.White
                Else
                    col = Color.Black
                End If
                bmp.SetPixel(j, i, col)

            Next j
        Next i

        ''' Copy the image.
        Return CType(bmp, Image)

    End Function


    '''<summary> Converts an image of any size to a pattern that
    '''can be feeded to the network.  </summary>
    '''
    '''<remarks> The product of width and height should be equal
    '''to the number of neurons in input or output layer. Basically
    '''only the monochrome version of image is converted to pattern </remarks>

    Public Function ArrayListFromImage(ByVal img As Image) As ArrayList

        Dim destination As ArrayList
        destination = New Arraylist()


        Dim bmp As New Bitmap(img)
        Dim hgt, wid As Long, clr As Color

        hgt = img.Height
        wid = img.Width

        Dim i, j As Integer

        Dim r, g, b As Integer

        For i = 0 To hgt - 1
            For j = 0 To wid - 1
                clr = bmp.GetPixel(j, i)
                '''Make it a percent value
                '''avg = avg * 100 / 255
                r = clr.R
                g = clr.G
                b = clr.B

                Dim avg As Single = (r + g + b) / 3
                If avg < (255 / 2) Then
                    destination.Add(0)
                Else
                    destination.Add(1)
                End If

            Next j
        Next i

        Return destination

    End Function

    ''' <summary> Shrinks an image in one picture box to another, using AntiAliasing </summary>
    Public Sub DrawImage(ByVal source As PictureBox, ByVal _
        target As PictureBox, Optional ByVal antialias As _
        Boolean = False)
        ''' Get the source Bitmap.

        If source.Image Is Nothing Then Exit Sub

        Dim frombm As New Bitmap(source.Image)
        DrawImage(frombm, target, antialias)

    End Sub


    ''' <summary> Shrinks a bitmap and draw it to a picture box, using AntiAliasing </summary>
    Public Sub DrawImage(ByVal bmap As Bitmap, ByVal _
        target As PictureBox, Optional ByVal antialias As _
        Boolean = False)
        ''' Get the source Bitmap.

        Dim from_bm As Bitmap = bmap

        ''' Make the destination Bitmap.
        Dim wid As Integer = target.Width
        Dim hgt As Integer = target.Height
        Dim to_bm As New Bitmap(wid, hgt)

        ''' Copy the image.
        Dim gr As Graphics = Graphics.FromImage(to_bm)
        If antialias Then gr.InterpolationMode = _
            Drawing2D.InterpolationMode.HighQualityBilinear
        gr.DrawImage(from_bm, 0, 0, wid, hgt)

        ''' Display the result.
        target.Image = to_bm
    End Sub

    ''' <summary> Shrinks a bitmap and returns the shrinked version </summary>
    Public Function ShrinkImage(ByVal bmap As Bitmap, ByVal newWidth As Integer, ByVal newHeight As Integer, Optional ByVal antialias As _
        Boolean = False) As Bitmap
        ''' Get the source Bitmap.

        Dim from_bm As Bitmap = bmap


        Dim to_bm As New Bitmap(newWidth, newHeight)

        ''' Copy the image.
        Dim gr As Graphics = Graphics.FromImage(to_bm)
        If antialias Then gr.InterpolationMode = _
            Drawing2D.InterpolationMode.HighQualityBilinear
        gr.DrawImage(from_bm, 0, 0, newWidth, newHeight)

        ''' Display the result.
        Return to_bm
    End Function

    ''' <summary> Create an image from a given pattern </summary>
    Public Function ImageFromArraylist(ByVal pattern As ArrayList, ByVal width As Integer, ByVal height As Integer) As Image

        Dim bmp As Bitmap = New Bitmap(width, height)
        Dim hgt, wid As Long
        Dim input As ArrayList = New ArrayList(), output As ArrayList = New ArrayList()



        hgt = bmp.Height
        wid = bmp.Width


        Dim i, j, counter As Integer

        counter = 0
        For i = 0 To hgt - 1
            For j = 0 To wid - 1
                Dim colorval As Integer = Math.Round(pattern(counter))
                Dim col As New Color()
                If colorval = 1 Then
                    col = Color.White
                Else
                    col = Color.Black
                End If
                bmp.SetPixel(j, i, col)
                counter = counter + 1

            Next j
        Next i

        Return CType(bmp, Image)




    End Function


End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -