Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Shell Root en 20 Enero 2010, 21:21 PM

Título: [VB.NET] Comparar Imagenes
Publicado por: Shell Root en 20 Enero 2010, 21:21 PM
Que tal, ando con una duda al crear una aplicacion, que lo unico que hace es comparar imagenes. Basicamente hace lo siguiente:

En 2 PictureBox tener la posibilidad de poner 2 Imagenes, al darle click en un Button, diga, Si son Iguales o no, y si se puede que diga por cuanto % es igual a la otra imagen.

Alguna pista de como crealo?
Título: Re: [VB.NET] Comprar Imagenes
Publicado por: Debci en 20 Enero 2010, 21:23 PM
No se exactamente, pero y si comparas bytes por posicion del puntero seek? vas recorriendo offset por offset comprovando unas y otras y luego haces una simple regla de tres para ver cuanto coincide con cuanto.

Es una idea, quizas sea descabellado, quizás no.

Saludos
Título: Re: [VB.NET] Comprar Imagenes
Publicado por: raul338 en 20 Enero 2010, 21:30 PM
Naa...bytes por bytes??.. no creo...
yo haria que la imagen mas grande, se redimensione a la mas chica, y de ahi recien comparar (OJO, habria que poner algun filtro "suavizado" como para no borrar pixeles o etc) y despues comparas ;)

PD: Tu post se llama "comprar imagenes", no "comparar imagenes" ;-D :xD
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: Keyen Night en 21 Enero 2010, 01:17 AM
Tengo una idea que podría funcionar aunque lleva algo de matemática pero bueno los programadors somos matemáticos natos :xD

Recorre todos los pixel de cada imagen comparando su valor hex, por cada pixel diferente sumaras +1 si es igual no sumaras nada en una variable A que usaras como buffer en una variable B sumaras +1 cada vez que compares un pixel con otro si al final A es igual a cero entonces la igual es igual si A es diferente que cero entonces es diferente para calcular el porcentaje entonces debes dividir  A entre B y multiplicarlo por 100, mira el ejemplo:

Código (vbnet) [Seleccionar]
Public Class Form1

    Public Function GetPixels(ByVal I As Bitmap) As List(Of Integer)
        GetPixels = New List(Of Integer)
        Dim X As Integer = 0, Y As Integer = 0

        While X <> I.Width AndAlso Y <> I.Height
            GetPixels.Add(I.GetPixel(X, Y).ToArgb)
            X += 1
            Y += 1
        End While

    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim I1 As New Bitmap("C:\1.jpg")
        Dim I2 As New Bitmap("C:\2.jpg")

        Dim A As Long = 0
        Dim B As Long = 0

        For Each C As Integer In GetPixels(I1)
            For Each D As Integer In GetPixels(I2)
                If C <> D Then
                    A += 1
                End If
                B += 1
            Next
        Next

        MsgBox("Diferentes: " & A & _
               vbNewLine & "Análizados: " & B _
               & vbNewLine & "Porcentaje de Diferencia: " & Math.Round(A / B * 100, 2) & "%")

    End Sub
End Class
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)

Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: Shell Root en 21 Enero 2010, 01:57 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)
Joder, Justo lo que necesitaba. Gracias seba123neo ;·)
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: elmaro en 21 Enero 2010, 03:54 AM
De acá podes sacar como marcar los cambios entre imagen e imagen. Ademas de eso, el programa esta muy bueno. Espero te sirva.

http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: nico56 en 21 Enero 2010, 06:29 AM
Cita de: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)

Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)

Cada vez me doy mas cuenta de lo groso que este framework.
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: seba123neo en 22 Enero 2010, 04:04 AM
Cita de: nico56 en 21 Enero 2010, 06:29 AM
Cita de: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)

Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)

Cada vez me doy mas cuenta de lo groso que este framework.

por eso es .NET , sigla de "Nunca Entendes Todo"  ;D
Título: Re: [VB.NET] Comparar Imagenes
Publicado por: nico56 en 22 Enero 2010, 05:32 AM
Cita de: seba123neo en 22 Enero 2010, 04:04 AM
Cita de: nico56 en 21 Enero 2010, 06:29 AM
Cita de: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)

Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)

Cada vez me doy mas cuenta de lo groso que este framework.

por eso es .NET , sigla de "Nunca Entendes Todo"  ;D

Jaja muy cierto, o nunca te vas a enterar de todas las clases que tiene.