تعریف پروژه
تشخیص دست نوشته ها موضوعی است که در سه دهه اخیر مورد مطالعه و بررسی گسترده ای قرار گرفته است و با انفجار تکنولوژی اطلاعات پیشرفت های چشم گیری در این زمینه از تحقیقات اتفاق افتاده است .
دو روش کلی ومتفاوت برای شناسایی دست نوشته وجود دارد :on_line و off_line .در سیستم های on_line با استفاده از یک قلم مخصوص بر روی سطحی الکترونیکی روند نوشتن انجام میشود و تشخیص به صورت on_line انجام می گیرد ٬ کاریرد این نوع سیستم ها در حوزه های امنیتی از جمله امضای دیجیتال می باشد .در سیستم های off_line دست نوشته ها قبلا جمع آوری شده اند و شناسایی بر روی آنها انجام می گیرد٬ کاربرد این نوع سیستم ها در خواندن اتوماتیک چک های بانکی ٬آدرس های پستی [1]٬ خواندن نامه های تجاری و...می باشد[2].
یکی از کاربرد های موفق از تشخیص دست نوشته ٬ باز شناسی نویسه های نوری [1] است که جندین سال است که موضوع تحقیقات قرار گرفته است ٬ برای اولین بار فقط کاراکتر های مجزا توسط این سیستم ها مورد شناسایی قرار می گرفتند ودر نتیجه روند تکامل٬ تمام کلمات مورد شناسایی توسط سیستم های ocr قرار گرفتند[3] اسناد دست نوشته برای شناسایی از طریق این گونه سیستم ها باید کاملا تمیز و با کیفیت بالا باشند.
در این پروژه می خواهم با استفاده از ویژگی های روش فازی روشی برای شناسایی ارقام دست نویس فارسی ارائه دهم .
برای شناسایی الگو های اعداد با قلم ها و اندازه های مختلف ، نرمالیزه کردن الگو ها امری اجتناب نا پذیر است ، بدین منظور از پنجره ای با اندازه ثابت استفاده کرده و اعداد را با مقیاس مناسبی در داخل این پنجره قرار می دهیم .
مهمترین عامل در شناسایی اعداد و حروف توسط چشم انسان ویژگی های مربوط به هر نویسه است ،چشم به طور طبیعی در مقایسه ویژگی های حروف و اعداد به صورت فازی عمل می کند روش های مختلفی را می توان برای استخراج ویژگی ها مورد استفاده قرار داد مثلا می توان یک نویسه را به قطعات کوچکتری شامل : خطوط افقی ،عمودی ، مایل و همچنین منحنی های بسته و کمان های محدب ومقعر تجزیه کرد و نحوه اتصال قطعات را مورد بررسی قرار داد . در این پروژه برای استخراج ویژگی از روش چهار خانه استفاده می شود [14,15]
در این روش یک تصویر با ابعاد64*64 به جدولی با ابعاد 8*8 نگاشته می شود ،بنابر این جدولی شامل 64 خانه خواهد بود که ابعاد هر یک از خا نه های جدول 8*8 است.
برای هر خانه جدول یک ویژگی استخراج کرده ، ویژگی بر اساس فاصله برداری نرمالیزه در[14] انتخاب می شود ،مجموعه داده ای به عنوان مجموعه مرجع در نظر گرفته می شود و میانگین ، واریانس ، تابع عضویت هر ویژگی و سپس متوسط تابع عضویت برای نمونه های مرجع را به دست می آوریم واز این به بعد هر عددی که به سیستم داده شود ویژگی هایش را استخراج می کنیم و تابع عضویت هر ویژگی را به دست آورده و با نمونه های مراجع مقایسه می شود و شناسایی بر اساس یک روش فازی صورت می گیرد.
در این پروژه دو تابع فازیگر را معرفی کرده ، در قسمت های بعدی به چگونگی و جزییات مراحل کار می پردازم .
مروری بر کار های انجام شده
همان طور که گفته شد یکی از کاربرد های موفق از تشخیص دست نوشته ٬ باز شناسی نویسه های نوری [2] است که چندین سا ل است که موضوع تحقیقات قرار گرفته است ٬ برای اولین بار فقط کاراکتر های مجزا توسط این سیستم ها مورد شناسایی قرار می گرفتند ودر نتیجه روند تکامل٬ تمام کلمات مورد شناسایی توسط سیستم های ocr قرار گرفتند[3] اسناد دست نوشته برای شناسایی از طریق این گونه سیستم ها باید کاملا تمیز و با کیفیت بالا باشند.
در نتیجه تحقیقات و تلاش های موثر ٬ سیستم هایی برای زبان انگلیسی[4 ]٬ زبان عربی [5] ٬زبان فارسی٬ [1]زبان چینی[6]و دست نوشته های عددی [7] فراهم است.
اولین گام برای تبدیل تصویر به اطلاعات قابل فهم برای کامپیوتر ٬ پارامتریک کردن عملیات است . لذا اولین عملیاتی که بر روی تصویر انجام می دهیم عملیات پیش پردازش تصویر است که می خواهیم بعضی از متغیر های ناخواسته را که باعث پیچیدگی پروسه تشخیص می شوند را کاهش دهیم ٬ عملیاتی مانند اصلاح کجی ها ٬ هموار سازی ٬ نرمالیزه کردن٬ بخش بندی[3] و.. یر روی تصاویر اعمال می کنیم. [8]
بعد از این مرحله باید ویژگی ها را استخراج کنیم٬در[9] برای انتخاب ویژگی ها ٬ روشhmm دو بعدی را انتخاب کرده است و سپس یک روش دسته بندی را برای شناسایی انتخاب کرده٬ روش های دسته بندی کننده نیز بسیار مختلف است٬ از جمله دسته بندی کننده
های svm ,neural networks, ,knn. .[10,11]
روش های زیادی برای استخراج ویژگی ها وجود دارد اما مسئله اصلی که در این رابطه وجود دارد پیدا کردن روش های استخراج ویژگی نیست بلکه به دنبا ل پیدا کردن بهترین روش برای استخراج ویژگی ها هستیم [12]
در [7] روشی جدید برای استخراج ویژگی ها در نظر گرفته شده است ،ویژگی های استخراج شده توالی توزیع ،barr-feature ،different projecrtion ،different profile می باشد و برای شناسایی شبکه عصبی را انتخاب کر ده است .
در [14],[15] با استفاده از ویژگی های روش فازی در مدلسازی نحوه استدلال مغز برای برخورد با پدیده مبهم ،روشی برای شناسایی الگو های عددی دست نویس و تایپ شده با قلم ها و اندازه های مختلف ارائه می شود.و روش چهار خانه[4] را برای استخراج ویژگی انتخاب کرده اند .
تحلیل موضوع
من برای تشخیص ارقام دست نویس یک سیستم off-line را پیشنهاد کردم که این سیستم به سه مرحله تقسیم می شود[7]
پیش پردازش[5]
استخراج ویژگی ها[6]
شناسایی[7]
پیش پردازش
هدف عملیات پیش پردازش در پردازش تصویر٬ آماده کردن و تمیز کردن تصویر برای مراحل دیگر سیستم ocr می باشد. مجموعه عملیاتی که در این مرحله انجام می دهیم متفاوت است
موارد زیر عملیات پیش پردازش را تحت پوشش قرار می دهد: [8]
طرح صفحه ورودی، scaning، سایز بندی و حذف کردن لکه ها و تیرگی های موجود در تصویرو....
در این پروژه عملیاتی را که من به عنوان پیش پردازش انجام میدهم به شرح زیر است:
فیلترینگ تصاویر:
تصاویری که ما از اعداد در اختیار داریم ممکن است به دلایل مختلفی از جمله شرایط bad writing ٬ شرایط بد فراگیری٬ وضعیت نویسنده و... آغشته باشد که باید در این مرحله پس از شناسایی نویز تصویر ٬ فیلترینگ مناسب را برای حذف نویز انتخاب کنیم مثلا ممکن است تصاویر آغشته به نویز نمک وفلفل باشند که با چشم نیز دیده می شود که برای حذف آن می توانیم فیلتر میانه را اعمال کرده و به راحتی نویز را از تصویر حذف کنیم .
نرمالیزه کردن تصویر
همان طور که می دانیم تصاویر دودویی سایز های متغیری دارند که باید قبل از شناسایی و ادامه مراحل کاری سایز تمام تصاویر را به اندازه یکسانی تبدیل نمود که در اینجا سایز تمام تصاویر را به سایز 64*64 پیکسل تبدیل می کنیم.
نمونه ای از تصاویراعداد که به عنوان مرجع انتخاب کرده ایم را ملاحظه می کنید.
استخراج ویژ گی ها
در این مقاله برای استخراج ویژگی ها از روش چهار خانه استفاده شده است، به این ترتیب که تصاویری از اعداد را که در اختیار داریم به ابعاد 64*64 پیکسل ،به جدولی به ابعاد 8*8 نگاشته می شود .بنابر این جدول شامل 64 خانه خواهد بود که ابعاد هر یک از خانه های جدول 8*8 است.
گوشه سمت چپ پایین ترین خانه جدول را به عنوان نقطه مرجع در نظر گرفته ام و فاصله متوسط برداری هر یک ازخانه ها را نسبت به نقطه مرجع به دست آورده ام .
فاصله اقلیدسی هر نقطه با مختصات (I,j) از رابطه زیر به دست می آید
D(I,j)=√i2,j2
و برای به دست آوردن متوسط فاصله برداری برای هر خانه از رابطه زیر استفاده می شود
Dav(b)=1/nb∑db(ik,jk)
که nb تعداد پیکسل های سیا ه در خانهb ام جدول است و db بیانگر فاصله نقاط سیاه در خانه شماره b نسبت به مبدا است .
هر یک از این فواصل برداری به عنوان یک ویژگی در نظر گرفته می شود و در مجموع برای هر عدد 64 ویژگی استخراج می کنیم .
برای خانه های خالی جدول (خانه هایی که در آن پیکسل سیاه وجود ندارد ) مقدار متوسط را صفر در نظر می گیریم .
شناسایی
ویژگی های استخراج شده برای شناسایی اعداد با قلم های مختلف به کار برده می شود . پایگاه داد ه ا ی از اعداد فارسی ایجاد کرده ام .برای شناسایی هر عدد به مجموعه داده های عددی مرجع نیازمندیم که در قسمت های بعدی به نحوه ایجاد آنها می پردازیم.
مجموعه فازی و انتخاب تابع عضویت
به منظور شناسایی مجموعه نویسه های عددی ناشناخته با استفاده از منظق فازی ، از یک تابع گوسی برای عضویت استفاده می شود.این تابع بر اساس فاصله برداری نرمالیزه انتخاب می شود.
برای شناسایی یک عدد ناشناخته نیاز به مجموعه داده های عددی مرجع داریم .
برای ایجاد مجموعه داده مرجع ،من 10 نمونه برای هر عدد در نظر گرفته ام که در مجموع 100 نمونه از اعداد را خواهیم داشت و برای این 100 نمونه ویژگی ها را استخراج می کنیم .
روش کار به این صورت است که برای هر رقم 64 ویژگی استخراج می کنیم ونیز برای هر رقم 10 نمونه داریم ،لذا برای هررقم خاص و برای هر ویژگی 10 نمونه ویژگی استخراج می کنیم و برای آنها میانگین و واریانس را مطابق فرمول زیر محاسبه می کنیم .
Mi=1/n∑nj fij
σ2i=1/n ∑jn (fij - mi )2
در روابط بالا i بیانگر شماره ویژگی (i=1,2,…64) و fij بیانگر مقدار ویژگی (فاصله برداری متوسط) برای نمونه j ام در خوشه i ام (خانه i ام جدول) است.و n برابر با تعداد نمونه های مرجع برای هر عدد است.
این کار را برای تمامی اعداد از 0 تا 9 تکرار می کنیم .
بعد از استخراج ویژگی ها تابع عضویت برای هر ویژگی را با استفاده از رابطه زیر به دست می آوریم .
Xi=exp[-(xi-m I )2/ σ i2] µ
که xi ، ویژگی i ام عدد ناشناخته x است .
Mi میانگین ویژگی i ام نویسه مرجع است .
اگر همه xi ها به مقادیر mi نزدیک باشند ،در این صورت عدد ناشناخته به عنوان همان نویسه مرجع شناسایی می شود، چون تمامی توابع عضویت (تمام توابع عضویت 64 ویژگی ) نزدیک 1 بوده و لذا تابع عضویت متوسط تقریبا برابر 1 است .
اگر mi(r) وi2( r) σ ،میانگین و واریانس i ام از مرجع r ام (r=0,1,2…9) باشند ،در این صورت تا بع عضویت متوسط را مطابق فرمول زیر تعیین می کنیم .
av (r) =1/n f ∑ [-(xi-m I )2/ σ i2]µ
در این صورت اگر (r ) avµ بیشینه شود انگاه x متعلق به r خواهد بود و شناسایی صورت می گیرد.
در واقع به این ترتیب عمل می کنیم که بعد از به دست آوردن میانگین و واریانس هرویژگی از یک نمونه مرجع ،متوسط میانگین و واریانس نمونه های مرجع را برای هر نویسه به دست می آوریم ..(برای ارقام 0,1,..9 ).سپس برای هر عدد ناشناخته ای که وارد سیستم می شود و می خواهد مورد شناسایی قرار گیرد با استفاده از فرمول بالا تابع عضویت متوسط را به دست می آوریم ،برای هر عدد 10 تابع عضویت متوسط به دست آورده و هر کدام که از همه بیشتر بود می گوییم عدد مورد شناسایی متعلق به آن خواهد بود.
از انجاییکه بعضی از مجموعه های فازی (ویژگی ها) واریانس بسیار کوچکی داشته و برخی دیگر دارای واریانس بزرگ هستند روشی دیگر را نیز ارائه می دهیم که در آن توابع فازیگر بر اساس مقدار واریانس از همدیگر تفکیک می شوند ،در این صورت تابع عضویت به صورت زیر خواهد بود:
Xi=exp[-(xi-m I )2/ σ i2] σ2>1 µ
xi =exp[-(xi –m I )2 . σ2 ] σ2<1 µ
تحلیل کد های استفاده شده در شبیه سازی
شبیه سازی این پروژه را در 4 فایل مطلب به انجام رسانده ام .ابتدا باید file z1 را اجرا کنید
با اجرای این فایل برنامه refrancedigit فراخوانی می شود ،ورودی این تابع در هر فراخوانی یک رقم از 0 تا 9 است ،بسته به اینکه ورودی تابع refrancedigit کدام رقم باشددر داخل حلقه تکرارهر بار یک تصویر از رقم مربوطه خوانده می شود و سپس با استفاده از سه حلقه for تو در تو ، تصویر خوانده شده به جدولی با 64 خانه با ابعاد 8*8 نگاشته می شود و برای هرخانه از جدول بررسی می شود که هر پیکسل سیاهی که وجود دارد فاصله برداری اش نسبت به نقطه مرجع(گوشه سمت چپ پایین ترین خانه جدول ) به دست آید وسپس فاصله متوسط برداری را برای هر خانه از جدول به دست می آوریم . فاصله متوسط برداری برای هر خانه از جدول را در متغیری به نام dav(k) محاسبه می کنیم و سپس به آرایه ای به نام f با ابعاد 20*64 می باشد انتفال می دهیم .هر ستون از آرایه f معرف میانگین فاصله برداری هر ویژگی از نمونه ها می باشد که ما چون در این جا 20 نمونه مرجع برای هر رقم در نظر گرفته ایم تعداد ستون های آرایه f برابر با 20 است .و بعد از استخراج ویژگی ها برای تمام نمونه های یک رقم در فایل z1 میانگین و واریانس هر ویژگی از نمونه های مرجع برای رقم مورد نظر را به دست آورده ،میانگین هرویژگی از نویسه عددی مرجع در آرایه ای به نام aver و واریانس هرویژگی از نویسه عددی مرجع در آرایه ای به نام vari قرار دارد.
عملیات بالا را با استفاده از بیرونی ترین حلقه for که درفایل z1 قرار دارد تکرار کرده و میانگین و واریانس ر ابرای همه نمونه ارقام مرجع (ارقام 0,1..9 ) به دست می آوریم .