PDA

View Full Version : تطبیق دو عکس با هم



system32
شنبه 03 مرداد 1388, 11:51 صبح
چطور می شه دو تصویر را با هم مقایسه کرد و ببینه آیا با هم یکیند (مثل همند)یا نه؟ ممنون.

Soroush.Sarabi
شنبه 03 مرداد 1388, 13:00 عصر
دوست عزیز شما می توانی هر دو عکس را به آرایه ای از بایت ها تبدیل کنی و سپس این دو آرایه را به

راحتی با هم مقایسه نمایی.

(http://soroush-sarabi.blogspot.com)

Mahdi1001
شنبه 03 مرداد 1388, 13:09 عصر
دوست عزیز شما می توانی هر دو عکس را به آرایه ای از بایت ها تبدیل کنی و سپس این دو آرایه را به

راحتی با هم مقایسه نمایی.
دوست عزیز این کار فقط زمانی جواب میده که دو عکی عین هم یا بهتر کپی شده هم باشند و کوچکترین تغییری به موشکل می خوره .
می تونی واسه تشابه دوعکس از یه سری الگوریتمهای پردازش تصویر استفاده کنی یا شبکه عصبی .
البته واسه تغییرات کوچیکم خودت میتونی با روش چک کردن بیتا انجام بدی فقط یه در صد خطا واسش بذار

system32
شنبه 03 مرداد 1388, 13:26 عصر
ممنون از دوستان. کسی قطعه کد یا مثالی در این زمینه سراغ نداره.

kiosksoft
شنبه 03 مرداد 1388, 15:20 عصر
دوست عزیز

از این نمونه کد استفاده کنید :



using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Security.Cryptography;

namespace Imagio
{
public class ComparingImages
{
public enum CompareResult
{
ciCompareOk,
ciPixelMismatch,
ciSizeMismatch
};

public static CompareResult Compare(Bitmap bmp1, Bitmap bmp2)
{
CompareResult cr = CompareResult.ciCompareOk;

//Test to see if we have the same size of image
if (bmp1.Size != bmp2.Size)
{
cr = CompareResult.ciSizeMismatch;
}
else
{
//Convert each image to a byte array
System.Drawing.ImageConverter ic =
new System.Drawing.ImageConverter();
byte[] btImage1 = new byte[1];
btImage1 = (byte[])ic.ConvertTo(bmp1, btImage1.GetType());
byte[] btImage2 = new byte[1];
btImage2 = (byte[])ic.ConvertTo(bmp2, btImage2.GetType());

//Compute a hash for each image
SHA256Managed shaM = new SHA256Managed();
byte[] hash1 = shaM.ComputeHash(btImage1);
byte[] hash2 = shaM.ComputeHash(btImage2);

//Compare the hash values
for (int i = 0; i < hash1.Length && i < hash2.Length
&& cr == CompareResult.ciCompareOk; i++)
{
if (hash1[i] != hash2[i])
cr = CompareResult.ciPixelMismatch;
}
}
return cr;
}
}
}


منبع : codeproject


یا اینکه از این مثال استفاده کنید : دانلود مثال (http://www.codeguru.com/forum/attachment.php?attachmentid=8691&d=1103661145)

system32
شنبه 03 مرداد 1388, 18:35 عصر
سلام.

دوستان نمی دونم چرا اگر دو تصویر کاملا متفاوت باشه ارور می ده.:گریه: کسی می دونه چرا؟

13601360
شنبه 03 مرداد 1388, 18:45 عصر
دوست عزیز این لینک ها رو ببینید


http://www.c-sharpcorner.com/UploadFile/prathore/ImageComparison01022009050404AM/ImageComparison.aspx
http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx

kiosksoft
یک شنبه 04 مرداد 1388, 12:04 عصر
سلام.

دوستان نمی دونم چرا اگر دو تصویر کاملا متفاوت باشه ارور می ده.:گریه: کسی می دونه چرا؟

دوست عزیز

در مقایسه دو تصویر , تصاویر در واقع دو آرایه هستن که با هم مقایسه میشن! پس اندازه آرایه ها با یکی باشد که خطای خواندن index رخ ندهد .

در حالتی که تصویر اول بزرگتر باشد این خطا رخ میدهد.