ساخت برنامه تصحیح پاسخنامه های کنکوری - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ساخت برنامه تصحیح پاسخنامه های کنکوری

0 امتیاز
سلام

من می خوام یه برنامه با زبان C#‎ بنویسم برای تصحیح پاسخنامه های کنکور

تا حدودی با image processing آشنا هستم

مشکل من اینه که اسکنر های مختلف تصویر های متفاوتی رو تحویل می دن
یک الگوریتم نوشتم که با اون صفحاتی که کج اسکن شده رو صاف می کنم ولی مشکل اینه که با اسکنر خودم اسکن می کنم مشکلی نداره و درست کار می کنه ولی با یه اسکنر دیگه اسکن می کنم با اینکه عکس صافه ولی عکس تفاوت تو مارکر ها پیدا می کنه و عکس رو می چرخونه

و اینکه عکس رو به سایز 600*800 تبدیل می کنم ولی مثلا مختصات 100 و 200 توی عکس ها متفاوته

توی تایپیک های دیگه یک سری بحث در مورد پارامتری کردن تصویر و نرمالیزه کردن تصویر بود ولی کامل نبودن

ممنون می شم اگر کسی چیزی در این مورد می دونه منو راهنمایی کنه
سوال شده بهمن 13, 1392  بوسیله ی darker (امتیاز 19)   1 1 2
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام. 

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

  • OMR برگه ها کنکور ساختار مشخص
  • OMR برگه ها با طرح های متفاوت و ساختار نا مشخص

در برگه های نوع اول برای شناسایی جهت برگه در یک طرف یا دو طرف گارد (مستطیل سیاه) به صورت ستونی وجود داره که عملیات transorm affine و prespective جهت تصحیح زاویه و شکل و کلاً عمیلات registeration  توسط آنها صورت می گیره. برای تشخیص زاویه می تونید از روش hough خطی استفاده کنید که قبلاً در همین سایت در موردش بحث شده.

در برگه های نوع دوم طراحی برگه متفاوت بوده و شما گاردهای مستطیلی شکل رو هم ندارید بنابراین برای تشخیص زاویه و عملیات registeration با از برگه استخراج ویژگی کنید و بوسیله  آن ویژگی ها می تونید زاویه و layout برگه را تشخیص دهید که یکی از بهترین ویژگی corner  و خط هستش که با fusion این دو روش می تونید روشی را طراحی کنید که توسط آن عملیات registeration روی هر برگه ای انجام دهید

 

 

پاسخ داده شده بهمن 15, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد بهمن 15, 1392 بوسیله ی darker
سلام
ممنون جواب من رو دادید
مشکل صاف کردن تصویر حل شد
اتفاقا من هم از یک همچین الگوریتمی استفاده می کنم که فاصله مارکر های بالا و پایین تصویر از لبه تصویر رو می گیرم و بعد در جهت مثبت یا منفی نصبت به کجی عکس عکس رو می چرخونم

برای محاسبه درجه هم از این فرمول استفاده می کنم
Math.Abs(تفاضل فاصله بالا و پایین) / 10
و درست کار می کنه

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