PDA

View Full Version : سوال: مقايسه 2 عكس در #C



M aJi D
دوشنبه 31 فروردین 1388, 12:51 عصر
#C
سلام.
من مي خوام تو برنامم 1عكس از 1فايل لود كنم و اون عكس تو 1سري عكس كه تو بانك هست مقايسه كنم كه اگر يكي بودن تشخيص بده.
البته چون عكسا كوچك هستند مثلا"در مربع 1*1 cm طبيعتا" دقت تا جايي كه ميشه بالا مي خواد.
ميشه كسي دستوري براي مقايسه يا تشخيص پيكسلاي هم رنگ و يكسان معرفي كنه.

ممنون

Sajjad.Aghapour
دوشنبه 31 فروردین 1388, 17:09 عصر
برای این کار پیشنهاد می کنم که عکس رو داخل پایگاه داده ذخیره نکنید.اگه هم می خواهین از عکس های داخل دی بی استفاده کنید و مقایسه عکس ها کار متداول شما هست،عکس رو hash کنید و کد اون رو نیز به همراه عکس ذخیره کنید و مقایسه رو بر اساس اون کد انجام بدید تا کار شما سرعت بیشتری داشته باشه ....

احمد سامعی
دوشنبه 31 فروردین 1388, 18:32 عصر
اگر مي خواي از ذخيره مجدد جلوگيري كني، تست كن ببين مي توني با باينري خوندن اين كار بكني چون بعد كد باينري رو مي توني راحت مقايسه كني

M aJi D
دوشنبه 31 فروردین 1388, 19:36 عصر
برای این کار پیشنهاد می کنم که عکس رو داخل پایگاه داده ذخیره نکنید.اگه هم می خواهین از عکس های داخل دی بی استفاده کنید و مقایسه عکس ها کار متداول شما هست،عکس رو hash کنید و کد اون رو نیز به همراه عکس ذخیره کنید و مقایسه رو بر اساس اون کد انجام بدید تا کار شما سرعت بیشتری داشته باشه ....


ببينيد عكس هاي من شكل خاص هستند مثلا" يك خط منحني يا يك خط صاف در يك مربع خالي و هر كدام از اين خطها چند حالت مختلف هستند.مثلاً 3تا خط عمودي 5تا مورب و...
و چون خيلي شبيه هم هستند مي خوام برنامه اي بنويسم كه تشخيص بده عكس لود(كه در بانك هم نيست ) شباهت بيشتري با كدام عكس موجود در بانك دارد.مثلاً بفهمه عكس مربوطه يك خط منحني با 1كمي انحنا در ابتداش است و اون عكس شبيه رو نشون بده.

ممنون

zahra111
دوشنبه 31 فروردین 1388, 19:51 عصر
برای این کار پیشنهاد می کنم که عکس رو داخل پایگاه داده ذخیره نکنید.اگه هم می خواهین از عکس های داخل دی بی استفاده کنید و مقایسه عکس ها کار متداول شما هست،عکس رو hash کنید و کد اون رو نیز به همراه عکس ذخیره کنید و مقایسه رو بر اساس اون کد انجام بدید تا کار شما سرعت بیشتری داشته باشه ....

با سلام. چطور میشه یه عکس رو hash کرد؟ میشه یه نمونه کد واسه hash کردن و مقایسهhash دو تا عکس بزارین.

hamenuptra
دوشنبه 31 فروردین 1388, 21:59 عصر
توی عکسها چند رنگ وجود داره ؟

13601360
دوشنبه 31 فروردین 1388, 22:46 عصر
توی این لینک (http://www.c-sharpcorner.com/UploadFile/prathore/ImageComparison01022009050404AM/ImageComparison.aspx) یه نمونه برنامه هست که از همون روش دوستمون استفاده می کنه

Sajjad.Aghapour
دوشنبه 31 فروردین 1388, 22:57 عصر
شاید راههای مختلفی برای مقایسه دو عکس وجود داشته باشه.می تونید دو عکس رو پیکسل به پیکسل مقایسه کنید که راه درستی نیست.کد دوم کدی هست که در پروژه ام به کار بردم و از سایت codeproject این ایده رو دیدم....
پیکسل به پیکسل:


bool b = true;

if (pictureBox1.Image.Size != pictureBox2.Image.Size)
b = false;
else
{
Bitmap bmp1 = new Bitmap(pictureBox1.Image);
Bitmap bmp2 = new Bitmap(pictureBox2.Image);
for (int i = 0; i < bmp1.Width; i++)
for (int j = 0; j < bmp1.Height; j++)
if (bmp1.GetPixel(i, j) != bmp2.GetPixel(i, j))
{
b = false;
break;
}
}

با استفاده از hash :


bool b = true;
if (pictureBox1.Image.Size != pictureBox2.Image.Size)
b = false;
else
{
ImageConverter ic = new ImageConverter();

byte[] bmp_1 = new byte[1];
byte[] bmp_2 = new byte[1];

bmp_1 = (byte[])ic.ConvertTo(pictureBox1.Image, bmp_1.GetType());
bmp_2 = (byte[])ic.ConvertTo(pictureBox2.Image, bmp_2.GetType());

SHA256Managed shaM = new SHA256Managed();
byte[] hash_1 = shaM.ComputeHash(bmp_1);
byte[] hash_2 = shaM.ComputeHash(bmp_2);

for (int i = 0; i < hash_1.Length && i < hash_2.Length; i++)
if (hash_1[i] != hash_2[i])
{
b = false;
break;
}

}

iroonidotnet
دوشنبه 31 فروردین 1388, 23:03 عصر
ممنون از این نمونه ولی ما باید یکم کاربردی تر نگاه کنیم . اگر دو تا عکس مختلف از یک شخص رو مقایسه کنیم . با این کد نمیشه عکس رو پیدا کرد . به نظرم بیشتر روی پردازش تصویر کار کنید.

Ali_Mor
سه شنبه 01 اردیبهشت 1388, 09:00 صبح
هش کردن و مقایسه پیکسلی برای زمانی خوب است که می خواهیم بفهمیم آیا دو تصویر عینا مثل هم هستند یا نه. وقتی قرار است شباهت (و نه مساوی بودن) را چک کنیم این روش ها جوابگو نیست.
چیزی که من میدانم با شبکه های عصبی می توان چنین کارهائی (بررسی شباهت) را انجام داد

M aJi D
سه شنبه 01 اردیبهشت 1388, 12:04 عصر
توی عکسها چند رنگ وجود داره ؟

2تا رنگ سفید و سیاه

M aJi D
سه شنبه 01 اردیبهشت 1388, 12:42 عصر
راستی اینم بگم که بدلیل شرایط خاص برنامم من مجبور به مقایسه پیکسلها هستم ببینید در واقع برنامه من مربوط به خطوط به هم چسبیده است که برنامه باید در مربع های 1*1 آنها رو جدا و شناسایی کنه حتی در بیشتر مواقع مربع زیر 1*1 است و اندازه به چند میلیمتر میرسه برای همین میخوام راهی پیدا کنم برنامه خودش تشخیص اندازه خط بده در وافع در مقایسه پیکسلها در مربع کوچک شکل شناسایی بشه.


ممنون

esmaeily-hosein
سه شنبه 01 اردیبهشت 1388, 12:50 عصر
نمیشه به صورت random مقایسه کنی مثلا 10 تا pixel . بعد اگر تماما با هم برابر بود یعنی همونه و اگرنه ....

Sajjad.Aghapour
سه شنبه 01 اردیبهشت 1388, 19:18 عصر
هش کردن و مقایسه پیکسلی برای زمانی خوب است که می خواهیم بفهمیم آیا دو تصویر عینا مثل هم هستند یا نه. وقتی قرار است شباهت (و نه مساوی بودن) را چک کنیم این روش ها جوابگو نیست.
چیزی که من میدانم با شبکه های عصبی می توان چنین کارهائی (بررسی شباهت) را انجام داد

بله دوست عزیز.منظور دوستمون در سوالی که پرسیده بودن دقیقا مقایسه دوتا عکس بود.برای همین خاطر من این روش رو گفتم........


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

در این مورد هم یه چند جایی مطلب دیده بودم.حتی نمونه برنامه.سرچ کنی پیداش می کنی.....
موفق باشی..

aminblu3e
پنج شنبه 07 اردیبهشت 1391, 20:32 عصر
سلام-آقا به من يه پروژه دادن كه هيچ ربطي به رشتم نداره ولي اجبارن بايد انجام بدم-اينجوريه كه بايد با يه دوربين ديجيتال يا وبكم لپتاپ هر ثانيه عكس بگيرم و هر عكس رو با يه عكس مرجع مقايسه كنه اگر تفاوت داشت برق سيستم رو قطع كنه-هيچ اطلاعاتي ام در اين زمينه ندارم-اگه كسي هر جوري تونست كمك كنه يا به من بگه كه كجا دنبالش برم بي زحمت كمك كنه-توي فروماي سايتم رفتم چن تام برنامه پيدا كردم اما نفهميدم بايد با چي اونارو كامپايل كنم-مرسي