PDA

View Full Version : تشخیص کپی یا اصل بودن عکس



RIG000
یک شنبه 27 مرداد 1392, 23:58 عصر
چطور میتونم دو تا عکس رو که یکی کپی و دیگری اصل هست رو بدست بیاریم . مثلا برنامه ما یه عکس رو بگیره (مثلا کارت ملی) وسپس تشخیص بده این عکس کپی هست یا اصل... چون اصل که رنگی باشه میشه اصل ولی کپی باشه میشه سیاه سفید ... حالا اگه راهی واسه این مورد وجود داره که عملی میشه یا ادرسی دارید که این مورد رو دیده باشید لطفا کمک کنید. متشکرم از همه

RIG000
دوشنبه 28 مرداد 1392, 08:43 صبح
مدیریت و ...... لطفا یه راهنمایی کنید. اصلا شدنی هست؟
یه بار به سوال ما هم جواب بدید ):

RIG000
دوشنبه 28 مرداد 1392, 10:15 صبح
هیچکی بلد نیست

hessam2003
دوشنبه 28 مرداد 1392, 10:19 صبح
سلام.
روش اینکار را میخوایید بدونید یا کد تشخیص رنگ؟

amir200h
دوشنبه 28 مرداد 1392, 10:27 صبح
چطور میتونم دو تا عکس رو که یکی کپی و دیگری اصل هست رو بدست بیاریم . مثلا برنامه ما یه عکس رو بگیره (مثلا کارت ملی) وسپس تشخیص بده این عکس کپی هست یا اصل... چون اصل که رنگی باشه میشه اصل ولی کپی باشه میشه سیاه سفید ... حالا اگه راهی واسه این مورد وجود داره که عملی میشه یا ادرسی دارید که این مورد رو دیده باشید لطفا کمک کنید. متشکرم از همه
خوب در عکس کپی فقط دوتا رنگ ساه و سفید وجود داره و در عکس اصلی بشتر. شما میتونین با تشخیص رنگ تعداد رنگ هارو بدست بیارین. اگه از دوتا بیشتر بود که اصله اگه نه که کپی.
البته به همین سادگی هم فکر نکنم باشه :چشمک:

RIG000
دوشنبه 28 مرداد 1392, 10:36 صبح
این شرایط ها رو میدونم. اگه برنامه ای هست که این مورد توش کار شده باشه!!!
اصلا راه درستش چی هست ؟ اصلا" شدنی هست؟!!!
کد تشخیص رنگ چطوریه ؟

RIG000
دوشنبه 28 مرداد 1392, 10:57 صبح
این مربوط به پردازش تصویر میشه؟

RIG000
دوشنبه 28 مرداد 1392, 11:49 صبح
لطفا" دوستان راهنمایی کنند

mehrdad1991h
دوشنبه 28 مرداد 1392, 11:50 صبح
بیا این را ببین همون چیزی میشه که میخوای :
http://www.c-sharpcorner.com/UploadFile/0f68f2/color-detecting-in-an-image-in-C-Sharp/


حالا اینا را هم ببین
http://stackoverflow.com/questions/3795268/find-a-color-in-an-image-in-c-sharp
http://www.codeproject.com/Questions/156542/how-i-can-get-color-in-image-by-c

بازم اگه خواستی تو گوگل این را هم سرچ کن rgb to hsi

ولی فکر میکنم با همون لینک اول کارت راه بیوفته شما

RIG000
دوشنبه 28 مرداد 1392, 12:02 عصر
تازه به این فکر میکنم اگه مدرکی قراره برامون ارسال بشه اگه مهر کپی برابر اصل روش بخوره جزئ همون اصل حساب میشه و سیستم قبول میکنه ... اما با یه ماجیک هم رو کپی خط بکشن باز طبق الگوریتم رنگ تایید میشه و ارسال میشه . من میخام که اصل رو بدست بیارم. امیدوارم منظورمو متوجه شده باشین

RIG000
دوشنبه 28 مرداد 1392, 13:10 عصر
بیا این را ببین همون چیزی میشه که میخوای :
http://www.c-sharpcorner.com/UploadFile/0f68f2/color-detecting-in-an-image-in-C-Sharp/


حالا اینا را هم ببین
http://stackoverflow.com/questions/3795268/find-a-color-in-an-image-in-c-sharp
http://www.codeproject.com/Questions/156542/how-i-can-get-color-in-image-by-c

بازم اگه خواستی تو گوگل این را هم سرچ کن rgb to hsi

ولی فکر میکنم با همون لینک اول کارت راه بیوفته شما
من چه جوری متوجه شم که رنگی هستش؟؟؟؟؟

ehsan7007
دوشنبه 28 مرداد 1392, 13:47 عصر
سلام دوست عزیز ؛ ایا مدرک خاصی قراره به برنامه داده بشه ؟ منظورم اینکه مثلا فقط کارت ملی یا شناسنامه هستش یا ممکنه هر چیزی باشه؟

RIG000
دوشنبه 28 مرداد 1392, 13:51 عصر
کارت ملی - یا سند و یا هر برگه دیگه ای که میتونه اصل باشه؟ چطور؟ راهی رو دارید؟
بحث مهر کپی برابر اصل رو هم یادتون باشه

ehsan7007
دوشنبه 28 مرداد 1392, 14:19 عصر
گفتم اگر یک مدرک خاص هست می شه چک کرد که ایا فلان رنگ توش وجود داره یانه ؛ اینطوری به مهر کپی برابر اصل هم کاری نداره ؛

شما اول با دو تا فور تودرتو پیکسل های تصویر رو می خونید و با یک ایف چک می کنید که ایا رنگ مورد نظرتون در تصویر هست یا نه (که البته نباید هم رنگ مهر باشه )

Bitmap OriginalPic = new Bitmap(pictureBox1.Image);
string ColorName;

for (int x = 0; x < OriginalPic.Width; x++)
{
for (int y = 0; y < OriginalPic.Height; y++)
{

ColorName = OriginalPic.GetPixel(x,y).Name;

if (ColorName == "Blue")
{
label1.Text = "تصویر اصلی";
}

}
}

RIG000
دوشنبه 28 مرداد 1392, 14:22 عصر
ممنونم از راهنماییت اما موضوع سوال من دیگه به بحث هوش مصنوعی داره می رسه.... :(

RIG000
دوشنبه 28 مرداد 1392, 14:23 عصر
در ضمن اگه عکس دیگه ای هم با کد شما بفرستن که توش ابی باشه هم میشه کارت ملی و هم اصل!!!!

ehsan7007
دوشنبه 28 مرداد 1392, 14:33 عصر
خوب می تونید درست خلافش رو انجام بدید ! یعنی شرط سیاه و سفید بودن تصویر رو روی عکس اصلی اعمال کنید ؛ از اونجایی که کیفیت عکس های کپی شده متفاوته (بعضی ها کم رنگ و بعضی ها پررنگ هست ) باید بزنید تو کار RGB !! برای مهر هم می شه گفت که فقط تعداد کمی از پیکسل های کل تصویر رنگی هستند.

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


در ضمن اگه عکس دیگه ای هم با کد شما بفرستن که توش ابی باشه هم میشه کارت ملی و هم اصل!!!!

راستی ! شما چیزی از این که سند رو هم تشخیص بده نگفتید !!

RIG000
دوشنبه 28 مرداد 1392, 14:42 عصر
ببینید سوال من دقیق میشه این که برنامه تشخصی بده که ما بتونیم سند یا کد ملی اصل هست یا نه همین حالا همه روش ها رو چک کن.
میبینی به هر حال به بخش از هوش باید برسی!!!!
با رنگها نمیشه به نتیجه رسید

aliagamon
دوشنبه 28 مرداد 1392, 14:51 عصر
والا من نمیدونم مهر کپی برار اصل چیه اما میتونی با پردازش تصویر border ها و حاشیه های تصویرو در بیاری بعد چک کنی ببینی جایی اون مهر هست یا نه(وارد هوش مصنوعی نمیشین بیشتر وارد پردازش تصویر میشین)
و در مورد عکس های سیاه و سفید.....این یه توهمه که عکس سیاه و سفید وافعا سیاه و سفیده چون یه طیف چند ملیونی از رنگ های خاکستریه(مثلا خاکستری 100 با 101 فرفی برای ما نداره اما یه رنگه جداست واقعا.....
پس شما باید بگردین تو مباحث پردازش تصویر واسه این کار شاید با طیف خاکستری بتونی بگردی....(اما الان که فکر میکنم میبینم اره یکم هوش مصنوعی هم میخواد)

ehsan7007
دوشنبه 28 مرداد 1392, 15:02 عصر
بفر ما !! اینم اون چیزی که شما می خواستی !

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

Bitmap OriginalPic = new Bitmap(pictureBox1.Image);
string Pix;
int count = pictureBox1.Image.Width * pictureBox1.Image.Height;
int WaB = 0;

for (int x = 0; x < OriginalPic.Width; x++)
{
for (int y = 0; y < OriginalPic.Height; y++)
{

Pix = OriginalPic.GetPixel(x,y).Name;

if (Pix.Substring(2, 2) != Pix.Substring(4, 2) && Pix.Substring(2, 2) != Pix.Substring(6, 2) && Pix.Substring(4, 2) != Pix.Substring(6, 2))
{
WaB++;
}

}
}


if ((WaB*100)/count > 50)
{
label1.Text = "تصویر اصل";
}


الگوریتم من در اوردی خوبی شدها !!

موق باشی.

FastCode
دوشنبه 28 مرداد 1392, 15:05 عصر
بهترین برنامه تشخیص تصاویر مست**ن به گفته سازندش نزدیک ۳۰٪ خطا داره.
واقعا فکر نمیکنم کسی بتونه با حقوق و پولی که توی ایران میدن وقت بزاره تا هوش مصنوعی رو طوری یاد بگیره که بتونه این کار رو انجام بده.
در ضمن یک سری مسائل مثل نویز تصویر و هزار مسئله دیگه رو اصلا کسی بهش اشاره هم نکرده.

اگر واقعا میخواهید این کار رو بکنید به نظر من اول از captcha شکستن شروع کنید.چند سال بیشتر طول نمیکشه که یاد بگیرید.احتمالا کمتر از ۱۰ سال.

ببخشید که صحبتهام نا امید کنندست.ولی فکر میکنم اگر نا امید بشید ضربه روحی کمتری میخورید تا اینکه ۶ ماه کار کنید که تازه بتونید بفهمید چرا نمیتونید

RIG000
دوشنبه 28 مرداد 1392, 15:09 عصر
دوست عزیز ممنون که وارد بحث شدی . اما اسناد زیاد هست . موضوع اینه که شما یکم بیشتر توجه کنی می بینی که به هوشی در مورد اینکار نیاز داریم.
فک کن یه کارت ملی داریم که اصلش = اصلش هست
کپی با مهر برابر اصل = با زهم مورد قبول هست و اصل میشه
کپی = قبول نیست
کپی با یه خط ماجیک رنگی که روش هست و اگه ما رنگ رو بخونیم و این برگه رنگی حساب میشه و اصل میشه .!!!!
چه کنیم؟ حالا این برگه میتونه کارت ملی باشه یا سند خونه باشه - مغازه باشه و هر برگه معتبر دیگه ای که میتونه نامعتبرش ارسال بشه .... که نمیخایم سیستم مجوز ورود همچین اطلاعاتی رو بده

RIG000
دوشنبه 28 مرداد 1392, 15:14 عصر
FAST CODE اینی که گفتی رو کم کم رو دستم داشت می افتاد . هر جور حساب میکردم به این موضوع می رسیدم.
از EHSAN و
aliagamon (http://barnamenevis.org/member.php?214213-aliagamon)
و بقیه هم ممنونم . واقعا" که فک میکنم زمان بسیار و اطلاعات زیادی میخاد

ehsan7007
دوشنبه 28 مرداد 1392, 15:18 عصر
خب مورد اول که حل شد درسته ؟
برا مورد دوم : ایا مهر شما ثابته ؟یعنی می شه یه فایل png از مهر داشت ؟ و اینکه اون روی تمام اسناد یکی هست (یعنی در کل از یک مهر استفاده بشه یا اگر چند تاست از همشون تصویر داشته باشیم )
برای مورد سوم : بسته داره نوع ماجیک چی باشه !! :لبخند: منظورم اینه که چون ماجیک ها یکم شفاف هستن ، در هر پیکسل یک رنگ ندارند ؛ برای این مسئله شما نمی تونید یه قسمت خاص از سند رو با ماجیک علامت بزنید ؟ مثلا همیشه گوشه چپ یا راست بالا باشه ؟


بهر حال به یک روشی باید همه ی مدارک شما برای برنامه استاندارد بشن ! اگر نه بقول دوست عزیز FastCode یه کپچا فسقلی اونهمه وقت می خواد با چند تا حرف ! په برسه به کارت ملی و اسناد !

RIG000
دوشنبه 28 مرداد 1392, 15:24 عصر
بدون یه کار حرفه ای همش میشه وقت رو تلف کردن . نمیشه درست در اورد این موضوع رو ...

FastCode
دوشنبه 28 مرداد 1392, 20:03 عصر
مورد اول خیلی هم حل نشد.
۱.
شما اصلا خطای سنسور رو در نظر نگرفتی.اون اسکنری که برگه رو اسکن میکنه خطا داره.ممکنه همه ی برگه یک مقدار مثلا آبی باشه.
شما اول باید saturation و hue ه میانگین رو به دست بیاری و بعد با یک خطای چند درصدی با اون مقایسه کنی.
۲.خطای protocol رو هم در نظر نگرفتید.اون برنامه ای که تصویر رو فشرده میکنه اگر کیفیت کافی نداشته باشه(مثلا jpeg2000) صد در صد حاشیه های رنگی خرابی به شما میده.
۳.کلا پراکندگی رو در نظر نگرفتی.یکی از نکات مهم اینه که جای مهر و کادر بندی ثابته و برنامه شما باید رنگ هر قسمت رو جدا حساب کنه.
۴.اینطوری cpu سرور دو روز بیشتر کار نمیکنه.برای این کار از کتابخونه های آماده مثل OpenCL و OpenCV استفاده کنید.
۵.باید مینیمم و ماکسیمم نور و مقدار حدودی exposure رو با توجه به نوع سند حدث بزنید.
۶.باید چرخش تصویر رو تشخیص بدید که در مرحله ۳ مشکل نداشته باشید.

هر موقع اینها رو حل کردید بگید ۷ تا ۱۲ رو هم بگم.خوبه من گرافیست نیستم.

RIG000
سه شنبه 29 مرداد 1392, 17:10 عصر
فک میکنم باید برنامه جوری باشه که کارت ملی رو بخونه.... مثلا خودش تشخیص بده که این کارت ملیه کارت معافیته و ....
مثل تشخیص چهر میشه کلا.............