Foro de elhacker.net

Programación => .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
  1. Public Class Form1
  2.  
  3.    Public Function GetPixels(ByVal I As Bitmap) As List(Of Integer)
  4.        GetPixels = New List(Of Integer)
  5.        Dim X As Integer = 0, Y As Integer = 0
  6.  
  7.        While X <> I.Width AndAlso Y <> I.Height
  8.            GetPixels.Add(I.GetPixel(X, Y).ToArgb)
  9.            X += 1
  10.            Y += 1
  11.        End While
  12.  
  13.    End Function
  14.  
  15.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  16.        Dim I1 As New Bitmap("C:\1.jpg")
  17.        Dim I2 As New Bitmap("C:\2.jpg")
  18.  
  19.        Dim A As Long = 0
  20.        Dim B As Long = 0
  21.  
  22.        For Each C As Integer In GetPixels(I1)
  23.            For Each D As Integer In GetPixels(I2)
  24.                If C <> D Then
  25.                    A += 1
  26.                End If
  27.                B += 1
  28.            Next
  29.        Next
  30.  
  31.        MsgBox("Diferentes: " & A & _
  32.               vbNewLine & "Análizados: " & B _
  33.               & vbNewLine & "Porcentaje de Diferencia: " & Math.Round(A / B * 100, 2) & "%")
  34.  
  35.    End Sub
  36. 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
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
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
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.