تشخیص کپی یا اصل بودن عکس

RIG

متخصص C#.net
چطور میتونم دو تا عکس رو که یکی کپی و دیگری اصل هست رو بدست بیاریم . مثلا برنامه ما یه عکس رو بگیره (مثلا کارت ملی) وسپس تشخیص بده این عکس کپی هست یا اصل... چون اصل که رنگی باشه میشه اصل ولی کپی باشه میشه سیاه سفید ... حالا اگه راهی واسه این مورد وجود داره که عملی میشه یا ادرسی دارید که این مورد رو دیده باشید لطفا کمک کنید. متشکرم از همه :gol:
 

bitaroos

عضو جدید
چطور میتونم دو تا عکس رو که یکی کپی و دیگری اصل هست رو بدست بیاریم . مثلا برنامه ما یه عکس رو بگیره (مثلا کارت ملی) وسپس تشخیص بده این عکس کپی هست یا اصل... چون اصل که رنگی باشه میشه اصل ولی کپی باشه میشه سیاه سفید ... حالا اگه راهی واسه این مورد وجود داره که عملی میشه یا ادرسی دارید که این مورد رو دیده باشید لطفا کمک کنید. متشکرم از همه :gol:

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

قسمت اول
1- باید از کارت ملی های مختلف، با اسکنرهای مختلف اسکن کنید (به صورت رنگی)
2- برای عکس های کپی هم به همین صورت، با اسکنرهای مختلف عکس رو اسکن کنید
3- به هیستوگرام این تصاویر نگاه کنید و ببینید رنج رنگشون، توی هیستوگرام کجاست

البته باید با هیستوگرام آشنا باشی -

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

حالا باید با استفاده از تحلیلی که رو هیستوگرام ها انجام دادید یک تابع بنویسد که رنگ هایی رو که
با استفاده از تابع Getpixel گرفتید مقایسه کنه و نتیجه رو اعلام کنه

اگر اسکنرهای مختلف، نتیجه هیستوگرامشون خیلی متفاوت بود، باید در ابتدا، یک سری فیلترها
به عکس اعمال کنید تا در ادامه به مشکل بر نخورید. مثلا از level استفاده کنید و ....

اگر فقط از یک اسکنر استفاده میکنید، کار خیلی راحت تره
نکات دیگه ای هم هست که نتیجه رو بهتر میکنه ولی فکر کنم تا همینجا کافیه.

البته از هوش مصنوعی هم به راحتی می تونید استفاده کنید (اگر بلد هستید)
و کلی کارهای دیگه

موفق باشید
 
  • Like
واکنش ها: RIG

RIG

متخصص C#.net
موارد بالایی که گفتید رو میدونم....
موضوع اینه که یه کارت ملی نیست فقط ... و از کل کشور عکس باید ارسال بشه
. هوش مصنوعی بهترین روش می تونه باشه و یه جورایی تنها روش چون قرار نیست یه عکس با عکس دیگه ای مقایسه بشه بلکه باید این رو هم تشخیص بده که اگه برگه روش مهر کپی برار اصل خورده رو هم جزء اصل بدونه!!!
 

bitaroos

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

فکر کنم تو نوشته هام نتونستم منظورم رو خوب برسونم.
روشی که گفتم کارش اینه که نرم افزار یک عکس رو میگیره، و بسته به رنگهایی که توی پیکسل های اون استفاده شده
تشخیص میده این عکس رنگیه یا Grayscale و این کار رو با الگوریتمی که شما نوشتید انجام میده.
و حالا این الگوریتم رو چجوری باید نوشت؟
با استفاده از مشاهده هیستوگرام چندین عکس رنگی و grayscale می فهمیم که چه الگوریتمی بنویسم، و در کل قرار
نیست هیچ دو عکسی باهم مقایسه بشن. به عنوان مثال عکس های Grayscale دارای مقادیر r, g, b یکسان در هر
پیکسل هستن، ولی موقع اسکن، ممکنه این مقادیر دقیقا انداره هم نباشن پس با نوشتن یک الگوریتم که بتونه این
تلورنس رو حس کنه، به راحتی میشه عکس کپی از اصل رو تشخیص داد.

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

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

vahidshahverdi

عضو جدید
سلام
بهترین کار و سریع ترینش اینه که عکس ورودی رو به 20 قسمت تبدیل کنی و از مرکز مختصاتیه هر قسمت توسط تابع "getpixel" یک مقداری رو میگیری و میرسیم به بحث rgb حالا کافیه فقط بدونی عکسای سیاه سفید 256 رنگ مختلف دارن ولی عکس رنگی 256*256*256 رنگ مختلف حالا کافیه از 20 پیکسلی که بدست اوردی رو مقایسه کنی اگه یکیش توی بازه عکس های رنگی بود اونوقت مشخص میشه این ساده ترین کاره البته 20 قسمت مثال بود. . . موفق باشی
 

Similar threads

بالا