چطور میتونم دو تا عکس رو که یکی کپی و دیگری اصل هست رو بدست بیاریم . مثلا برنامه ما یه عکس رو بگیره (مثلا کارت ملی) وسپس تشخیص بده این عکس کپی هست یا اصل... چون اصل که رنگی باشه میشه اصل ولی کپی باشه میشه سیاه سفید ... حالا اگه راهی واسه این مورد وجود داره که عملی میشه یا ادرسی دارید که این مورد رو دیده باشید لطفا کمک کنید. متشکرم از همه
سلام
اگر هدفتون تشخیص تفاوت عکس رنگی با عکس Grayscale هست.
یکی از فکر هایی که به ذهنم رسید اینه
قسمت اول
1- باید از کارت ملی های مختلف، با اسکنرهای مختلف اسکن کنید (به صورت رنگی)
2- برای عکس های کپی هم به همین صورت، با اسکنرهای مختلف عکس رو اسکن کنید
3- به هیستوگرام این تصاویر نگاه کنید و ببینید رنج رنگشون، توی هیستوگرام کجاست
البته باید با هیستوگرام آشنا باشی -
قسمت دوم (کد نویسی)
باید تک تک پیکسل هایِ عکسِ ورودی به نرم افزار رو با دستور Getpixel بگیری (با کمک حلقه for)
البته تابع getpixel کند عمل میکنه، برای عکس های با کیفیت (2 مگ به بالا) ممکنه 10 ثانیه طول
بکشه (البته بستگی به CPU هم داره) راه بهتر استفاده از BitLock (شاید هم lockBit بود) که سرعت
خیلی بالایی داره و برا پردازش تصویر بهتره از اون استفاده بشه ولی شما چون وارد نیستید ممکنه
به مشکل بر بخورید.
حالا باید با استفاده از تحلیلی که رو هیستوگرام ها انجام دادید یک تابع بنویسد که رنگ هایی رو که
با استفاده از تابع Getpixel گرفتید مقایسه کنه و نتیجه رو اعلام کنه
اگر اسکنرهای مختلف، نتیجه هیستوگرامشون خیلی متفاوت بود، باید در ابتدا، یک سری فیلترها
به عکس اعمال کنید تا در ادامه به مشکل بر نخورید. مثلا از level استفاده کنید و ....
اگر فقط از یک اسکنر استفاده میکنید، کار خیلی راحت تره
نکات دیگه ای هم هست که نتیجه رو بهتر میکنه ولی فکر کنم تا همینجا کافیه.
البته از هوش مصنوعی هم به راحتی می تونید استفاده کنید (اگر بلد هستید)
و کلی کارهای دیگه
موفق باشید