نمایش نتایج 1 تا 30 از 30

نام تاپیک: تکنیک های مقایسه ی دو تصویر

  1. #1

    تکنیک های مقایسه ی دو تصویر

    مقایسه ی دو عکس

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

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

    راه اول :
    بعد از چک نمودن سایز دو تصویر ، ما از طریق تابع GetPixel مربوط به کلاسBitmap هر یک از پیکسلهای تصویر اول را با پیکسل نظیر در تصویر دوم مقایسه میکنیم و در صورتی که حتی یک پیکسل از دو تصویر با یکدیگر برابر نبودند ، دو تصویر نیز با یکدیگر یکی نخواهند بود ، حال به کد زیر توجه کنید :


    Function CompareImagesByPixel(ByVal FirstBMP As Bitmap, ByVal SecondBMP As Bitmap) As Boolean

    Dim AreSizesEqual, AreIdentical As Boolean
    AreIdentical = True
    'ابتدا سایز دو تصویر را با یکدیگر مقایسه میکنیم
    AreSizesEqual = (FirstBMP.Size.ToString = SecondBMP.Size.ToString)
    If AreSizesEqual = False Then
    Return False
    Exit Function
    End If

    'سپس از طریق یک حلقه ، تک تک پیکسلهای دو تصویر را با یکدیگر مقایسه مینماییم
    For X As Integer = 0 To FirstBMP.Width - 1
    For Y As Integer = 0 To FirstBMP.Height - 1
    If Not (FirstBMP.GetPixel(X, Y).ToString = SecondBMP.GetPixel(X, Y).ToString) Then
    AreIdentical = False
    Exit For
    End If
    Next Y
    Next

    Return AreIdentical
    End Function




    اما باید توجه داشت که اعمال این روش در جهت مقایسه ی دو تصویر وقت گیر میباشد ، لذا میتوانیم از روش دیگری استفاده نماییم .

    راه دوم :
    در این روش میبایست از مقایسه ی مقدار Hash شده ی دو تصویر با یکدیگر استفاده نماییم . الگوریتمهای Hash متنوعی در فضای نام System.Security.Cryptography فراهم آورده شده اند . در اینجا ما از کلاس SHA256Managed در جهت پیاده سازی الگوریتم SHA1 استفاده خواهیم نمود . متد ComputeHash مربوط به این کلاس آرایه ای از بایت را به عنوان پارامتر ورودی دریافت و مقدار Hash شده ی 256 بیتی از داده ی مورد نظر را تولید مینماید . بدین ترتیب با Hash نمودن دو تصویر مورد نظر و مقایسه ی آنها با یکدیگر میتوانیم به یکی بودن دو عکس با یکدیگر پی ببریم .


    Function CompareImagesByHashing(ByVal FirstBMP As Bitmap, ByVal SecondBMP As Bitmap) As Boolean
    'ابتدا سایز دو تصویر را با یکدیگر مقایسه میکنیم
    Dim AreSizesEqual, AreIdentical As Boolean
    AreIdentical = True
    AreSizesEqual = (FirstBMP.Size.ToString = SecondBMP.Size.ToString)
    If AreSizesEqual = False Then
    Return False
    Exit Function
    End If
    'نمونه ی از کلاس
    'ImageConverter
    'در جهت تبدیل دو تصویر به آرایه ای از بایتها ایجاد مینماییم
    Dim ImageCon As New ImageConverter
    Dim arrImage1(1), arrImage2(1) As Byte

    'دو تصویر را به آرایه ای از بایتها تبدیل مینماییم
    arrImage1 = ImageCon.ConvertTo(FirstBMP, arrImage1.GetType)
    arrImage2 = ImageCon.ConvertTo(SecondBMP, arrImage2.GetType)

    'نمونه ای از کلاس
    'SHA256Managed
    'ایجاد کرده و هر یک از دو تصویر را توسط متد
    'ComputeHash
    'که مقدار بازگشتی آن آرایه ای از بایتها میباشد ، هش مینماییم .
    Dim SHA As New System.Security.Cryptography.SHA256Managed
    Dim Image1_Hashed(), Image2_Hashed() As Byte
    Image1_Hashed = SHA.ComputeHash(arrImage1)
    Image2_Hashed = SHA.ComputeHash(arrImage2)

    'سپس هر یک از اعضای دو آرایه را با یکدیگر مقایسه مینماییم
    For iHash As Integer = 0 To Image1_Hashed.Length - 1
    If Not (Image1_Hashed(iHash) = Image2_Hashed(iHash)) Then
    AreIdentical = False
    Exit For
    End If
    Next

    Return AreIdentical
    End Function
    فایل های ضمیمه فایل های ضمیمه
    I've just started tweeting!
    @Alireza_Maddah

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

  3. #3
    سلام
    مشکلاتی در هر دو روش وجود داره که گفتنش ضرری نداره.
    در روش دوم امکان بدست اوردن درصد تغییرات و مشخص کردن محل تغییرات وجود نداره.
    در روش اول اگر یک تصویر ار محیط باز باشه و بخواهیم تغییرات محیط رو بدست بیاریم(مثلا در سیستم های حفاظتی) در صورت تغییر نور محیط برنامه وجود تغییرات را در تمام محیط گزارش می دهد که در واقع
    چیزی وارد محیط نشده است.

    مرسی

  4. #4
    اگر درست متوجه شده باشم ،در هر دو روش اگر حتی یک پیکسل تفاوت باشد جواب منفی است. حال آنکه از نظر چشم انسان یک مقدار تفاوت قابل تحمل است. مثلا اگر یک فایل رو بدون تغییر تعداد پیکسلها با درجات مختلف فشرده سازی کنیم یا با اعمال فیلترها تغییرات ملایم رو اون بدیم باز هم از نظر انسان مشابه هم خواهند بود.
    بنابراین بهتر است در روش اول متغییری رو برای ذخیره مجموع درصد تفاوت تک تک پیکسلها در نظر گرفته و پس از پردازش، اگر مقدار آن از یک حد آستانه کمتر شد میتوان گفت دو تصویر شبیه هم هستند.
    و دیگر اینکه اگر بخواهیم دو تصویر را به روشی مشابه مغز انسان مقایسه کنیم ( مثل سیستمهای تشخیص هویت ) باید از روشهای پیچیده هوش مصنوعی استفاده کرد. و برای این کار نرم افزارهای مخصوصی وجود داره.

  5. #5
    در کل مقایسه دو تصویر در سیستم های انگشت نگاری و چهره شناسی به کار میره و این روشها اصلا برای چنین کارهایی مناسب نیست فرض کنید که اثر انگشت یک نفر بر روی کاغذ اسکن شده کمی به طرف چپ رفته باشد در این صورت این کار منتفی هستش اون طور که یکی از اساتید دانگاه تبریز میگفت پایگاه داده اراکل خودش میتونه مقایشه دقیق اثر انگشت را انجام بده و در ضمن در کار شما اگر جنس کاغذ اسکن شده و نوع دوربین هم تاثیر میزاره و در کل این روش در 90% موارد جوابه false میده

  6. #6
    کاربر دائمی آواتار sjj
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    ایران
    پست
    304
    به نظر جالب ولی خیلی ابتدایی می یاد .نکاتی که باید مد نظر داشت اینه که برنامه باید از Rotate ، Size و همچنین تفاوت رنگ ها در دو عکس مورد مقایسه چشم پوشی کنه.اگه ما بتونیم این مشکلات رو حل کنیم دیگه مشکلی هم واسه بحث شیرین OCR فارسی نداریم.
    ولی یادمون باشه که همیشه باید از یه جایی شروع کرد.

  7. #7
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    حالا اگه هر دو عکس یکی بودن و فقط اندازشون فرق می کرد؟

  8. #8
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    چرا بحث به این جالبی و مفیدی رو رها کردین بیاین ادامه اش بدیم
    خیلی به درد می خوره ها از ما گفتن بود

  9. #9
    کاربر دائمی آواتار sjj
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    ایران
    پست
    304
    من هم موافقم ولی با این الگوریتم فکر نکنم به جایی برسیم.

  10. #10
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    خوب پس بهتره فکرامونو رو هم بزاریم و یه کاری کنیم
    من که پایه ام
    شما رو نمیدونم

  11. #11
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    خوب مثل این که هیچ نیست کمک کنه.
    باید خودم دست به کار شم.
    به نظر من بهتره که اول بیایم طول و عرض دو تصویر رو یکی کنیم. برای این که اگه دو تا تصویر یکی باشن و فقط اندازشون فرق کنه مشکل بر طرف شه.
    دوم اینکه ممکنه عکس همون عکس باشه ولی مثلا با 90 درجه چرخش. من واسه این کار راه حلی پیدا نکردم جز این که تصویر اولی رو با یک بار به صورت هادی با تصویر دومی مقایسه کنیم.بعد تصویر دوم رو 90 درجه بچرخانیم و دوباره مقایسه کنیم و همینطور دوباره تصویر دوم رو 90 درجه بچرخانیم و مقایسه کنیم تا با هر چهار طرف مقایسه بشه.
    ولی فکر می کنم واسه کار دوم راه حل بهتری هم باشه.
    دیگه اون برمیگرده به شما که آیا میخواین کمک کنین یا نه.

  12. #12
    کاربر دائمی آواتار sjj
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    ایران
    پست
    304
    علاوه بر اینا یه مشکلات دیگه ای هم هست.به نظر من این الگوریتم زیاد قوی نیست.با یه مثال بیشتر توضیح میدم.شما فرض کنید که می خواید دو تا نمونه امضا رو با هم مقایسه کنید.خب دو تا امضا که دقیقا یکی نمی شن.پس مقایسه پیکسل به پیکسل رو بهتره از فکرمون بیرون کنیم.تازه یه سری مشکلات ریز دیگه هم هست مثل رنگ دو تصویر و ... که فکر نکنم زیاد مشکل ساز باشن.

  13. #13
    فکر نمی کنم اصلا بشه امضا رو با کامپیوتر مطابقت داد ...میشه ؟؟؟
    در مورد تصویر هم نباید اندازه ها رو یکسان کرد شاید دو تصویر مثل هم باشند با این تفاوت که دومی از هر سمت مثلا یک سانت گوشه سفید داشته باشد
    باید تعریف کنیم اگه مثلا 90 درصد پیکسال ها مثل هم باشد آنوقت نتیجه را قابل قبول اعلام کند
    فکر کنم این بهتر باشه

  14. #14
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    حالا بهتر نیست اضافات رو اول پاک کنیم بعد اندازه هاشون رو یکی کنیم؟

  15. #15
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    باز که همتون گذاشتین رفتین که بابا بیاین ادامه بدیم خیلی مفیده و کلی کاربرد داره

  16. #16
    با سلام خدمت همه دوستان و اساتید خودم
    حدود یک سال پیش هم چنین طرحی ارائه شد و البته من تا جایی که می تونستم و در توانم بود
    هر جور اطلاعاتی رو در اختیار دوستان قرار دادم .حتی چند الگوریتم رو هم ارائه کردم که مورد توجه همه دوستان قرار گرفت .اما پس از مدتی همه رفتن دنبال زندگی و گرفتاری ها
    در کل از یاد همه فراموش شد .جهت اطلاع به مبحث(مطالب مربوط به اثر انگشت مراجعه کنید)
    با این حال اگر بحث ادامه پیدا کنه قول قول میدم بازم تا جایی که بتونم کمک کنم

  17. #17
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    سلام
    دستتون واقعا درد نکنه
    لینک این تاپیک رو میزارید؟
    خیلی خیلی ممنون.

  18. #18

  19. #19
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    خوب دسستتون درد نکنه فایل خوبی بود
    خوب باید از کجا شروع کنیم.
    من پایه ام
    فکر کنم پا که بگیره بچه ها میان
    به زودی چند تا مرجع میزارم
    فعلا بای

  20. #20

  21. #21
    کاربر دائمی آواتار Ali_Mor
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کره خاک، البته بصورت موقتی
    پست
    259
    در مورد اثر انگشن اطلاعاتی ندارم. ولی می دونم با کمک شبکه های عصبی می توان خیلی کار انجام داد. مثلا شباهت تصاویر را بررسی کرد.
    مثلا من تونستم با کمک اون یک OCR که شماره پلاک خودرو را پیدا میکرد بنویسم که لازم نبود تصویر پلاک از زاویه یا فاصله خاصی گرفته بشه.
    نمونه های جالبی از شبکه عصبی را می تونید تو help نرم افزار MATLAB و یا اینترنت پیدا کنید

  22. #22
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    اثر انگشت و امضا رو براحتی میشه با استفاده از شبکه های عصبی مقایسه کرد

  23. #23
    کاربر جدید آواتار kourosh_ag
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    مشهد
    پست
    26
    سلام
    من هم در مورد مقایسه اثر انگشت ها تحقیقاتی کردم و تا اون جا که فهمیدم مقایسه دو اثر انگشت نه بر اساس تمامی اثر انگشت بلکه بر اساس 10 نقطه مشخص صورت میگیره.
    البته تصویری هم در این رابطه دارم که اگر پیداش کردم حتما Up میکنم

  24. #24
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    آقای kourosh_ag عکسها را پیدا نکردید؟

  25. #25
    کاربر جدید
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    همه جای ایران سرای من
    پست
    9
    سلام
    اگه کسی هنوز به این تایپک سر می زنه ، من یه سوال دارم !!!!!!!!!!

  26. #26
    سلام
    بحث بسیار بسیار مفید و همین طور مشکلی رو پیش کشیدید و رها کردید
    اگه بشه همچین برنامه ای بنویسید من اونو ازتون حاضرم که بخرم هر کمکی هم برای پیشرفتش می کنم و..
    من بیشتر مد نظرم مقایسه عکس های هست که دوربین هنگام کارت زدن پرسنل از روبروی ساعت می گیره هست حتی اگه 70 درصد هم جواب بده خوبه و....

  27. #27
    کاربر دائمی آواتار sasan_vm
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    زاهدان
    پست
    494
    سلام

    مقایسه تصاویر در مباحث Biometrics , Robotics کاربرد فراوان دارد ولی بحث مقایسه پیکسل به پیکسل و سایز همسان در این مورد منتفی است.
    در این مورد الگوریتم های زیادی موجود است که اساس کار آنها یکی است، در مورد مقایسه اثر انگشت ها روش کار بدین صورت است:

    1- تبدیل تصویر به فرمت 8bit GrayScale
    2- استخراج جرئیات از این تصویر این جزئیات شامل نقاط (Minutiae, Delta, Core, Double Core) می باشد و یک سری اطلاعات دیگر مانند (Pattern Class, Position, Curvature) این اطلاعات در یک فرمت خاص یا فرمتهای استاندارد (NIST ITL-1-2000، INCITS 378-2004) ذخیره می شوند (Template) و برای مقایسه اثر انگشتها از این template استفاده می شود. در زمان مقایسه هیچ ارجاعی به تصویر اولیه اثر انگشت نداریم همه اطلاعات مورد نیاز درون template موجود است.
    3- اساس کار مقایسه اثر انگشتها مقایسه نقاط Minutiae است این نقاط شامل شروع خط، انتهای خط، دو شاخه شدن خط و ... می باشند. تصویر ضمیمه مقایسه دو اثر انگشت را با جزئیات کامل نشان میدهد، البته بقیه جزئیات هم در نتیجه نهائی موثر است. (ظاهرا این 2 تصویر شباهتی ندارند ولی شامل 15 Minutae مشابه با شباهت 308 هستند.)

    امسال ما یک پروژه شناسائی اثر انگشت را در مقیاس بزرگ انجام دادیم که با موفقیت تست و راه اندازی شد. Demo برنامه(شامل document, film, pictures) را از این link می توانید دریافت کنید:
    http://rapidshare.com/files/46306728/afis.zip.html

    من بیشتر مد نظرم مقایسه عکس های هست که دوربین هنگام کارت زدن پرسنل از روبروی ساعت می گیره هست حتی اگه 70 درصد هم جواب بده خوبه
    شناسائی چهره نسبت به اثر انگشت کار ساده تر ولی با دقت پائین تر است ، در این زمینه برنامه ای را تازه به اتمام رسانده ایم مشغول مراحل تست ان هستیم بزودی اماده ارائه می شود (حد اکثر 2 ماه) ، در بحث مورد نظر شما حدث ما این است که بالای 90% جواب بگیریم.

    برنامه شناسائی اثر انگشت هم اکنون آماده ارائه است.
    موفق باشید.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله sasan_vm : سه شنبه 17 اردیبهشت 1387 در 10:12 صبح

  28. #28
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    ممنون
    ان شا الله بررسی شود و مورد استفاده قرار گیرد

  29. #29
    کاربر تازه وارد آواتار vb_bmw
    تاریخ عضویت
    آذر 1385
    محل زندگی
    زیر پرچم دات نت!!!
    پست
    56
    سلام!

    این مبحث خیلی گستردست!

    انقدر که توی دکتری ما یه شاخه به نام Image Preprocessing داریم!

    اگه بشه و بخواید می تونیم روش کار کنیم!ماشالا اینجا این کاره زیاد هست!

  30. #30
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    بسم الله
    شروع کنید

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •