در سامانههای پیدا کردن متن در تصویر، هدف آن است که مکان متن موجود در تصویر را مشخص کنیم. برای مثال به تصاویر زیر توجه کنید که چگونه مکان متون موجود در آنها مشخص شده است:![نمونۀ تصاویر با مشخص شدن مکان متن](https://www.dropbox.com/s/22tff62aun326q0/MSRA-TD500_Example.jpg?dl=1)
کاربرد اصلی این مسئله به عنوان یک پیش پردازش قبل از تبدیل تصویر به نوشتار یا همان OCR است.
# مقدمه
امروزه به دلیل گسترش چشمگیر تکنولوژی و در نتیجه دوربین های عکاسی، عکسهایی با کیفیتهای متنوع موجودند که حجم زیادی از دادههای تصویری را به وجود آوردهاند.موفقیت بزرگ تلفنهای هوشمند و خواستههای بزرگ در جستجو و درک تصویر مبتنی بر محتوا، تشخیص متن را یک وظیفه حیاتی در تعامل کامپیوتری انسان ساختهاست. بنابراین استفاده از این تصاویر و پردازش آنها می تواند به ما اطلاعات مفیدی در موارد مختلف بدهد. به همین دلیل پردازش تصاویر در حال حاضر بسیار مفید بوده و توجه بسیاری را به خود جلب کردهاست. یک نوع از این پردازشها، استخراج متن از تصویر است که برای آن لازم است ابتدا متن موجود در تصاویر تشخیص دادهشده و سپس تبدیل به نوشتار صورت بگیرد.
در این مقاله هدف پرداختن به تشخیص متن در تصاویر است و در آن به مرحله استخراج متن از تصویر پرداخته نمی شود.
در روشهای قدیمی برای استخراج متن از تصاویر صفحات پویش[^scan]شده مورد بررسی قرار می گرفتند. تصاویر مورد استفاده در این روش باید دارای پسزمینه سفید بوده و متن موجود در آنها می بایست به صورت افقی قرار می گرفت تا متون آنها قابل تشخیص باشند. ولی در حال حاضر نیاز است عکسها با پیچیدگی های مختلف مورد بررسی قرار بگیرند و امکان استخراج متن از آنها وجود داشته باشد.[1]
**از جمله مشکلات و پیچیدگی های استخراج متن از این تصاویر، عبارت است از :**
**1- پیچیدگی پس زمینه تصویر[^complex backgrounds] :** وجود پسزمینهی پیچیده از دو جهت میتواند ایجاد مشکل نماید. اول آنکه برخی از اشیا که دارای ساختار منظم و یا بافت خاصی هستند (مانند درها، پنجرهها، خطوط خیابان، برگ درختان و غیره ) به اشتباه متن شناسایی میگردند. دوم آنکه زمانیکه پسزمینهی متن تصویری پیچیدهاست نمیتوان لبههای[^edge] متن را به درستی مشخص نمود.
**2- سطوح غیر همسطح [^nonplaner surfaces] :** ممکن است متن موجود در تصویر، قسمتی در یک سطح و قسمتی در سطح دیگر داشته باشد و یا دارای عمق و بعد بوده باشد. تشخیص این متون مشکل است.
![سطوح غیر همسطح](https://boute.s3.amazonaws.com/259-nonplaner_surfaces.PNG)
**3- جهت متن :**متن موجود در تصویر ممکن است دارای زاویه بوده و جهت آن به صورت افقی محض نباشد.
![جهت متن](https://boute.s3.amazonaws.com/259-jahat.PNG)
**4-روشنایی کنترل نشده [^uneven lightening] :** در برخی از تصاویر روشنایی و نورپردازی به صورت ناهموار است به طوری که قسمتی دارای وضوح و روشنایی بیشتر و قسمتی از آن تاریک است.
![نورپردازی ناهموار](https://boute.s3.amazonaws.com/259-journal.pone.0110991.g015.png)
**5- کیفیت پایین :** به دلیل استفاده از دوربینهای معمولی ،کیفیت پایین تصاویر ، یکی از اصلیترین مشکلاتی است که برای پیدا کردن متن در تصویر با آن مواجه هستیم.
**6- مشخص نبودن مرز متن و پسزمینه:** ممکن است متن موجود همرنگ با پسزمینه خود بوده و تشخیص لبه آن به سختی صورت بگیرد.
![ مشخص نبودن مرز متن و پس زمینه](https://boute.s3.amazonaws.com/259-dPICT0054.JPG)
**7- تنوع در رسمالخط :**
![تنوع در رسمالخط](https://boute.s3.amazonaws.com/259-qPICT0011.JPG)
[2]
موارد ذکر شده در بالا مشکلات اصلی برای پیدا کردن متن در تصاویر است. مشکلات دیگری مانند فونت، رنگ و اندازه متون نیز وجود دارد.
حال به بررسی اهمیت پیدا کردن و تشخیص متن در تصویر میپردازیم. این کار میتواند سببب بهبود روشهای مورد استفاده در ابزارهای نویسهخوان نوری[^optical character recognition] شود. با استفاده از بهبود روشها میتوان عکسهای تهیه شده با دوربینهای معمولی را نیز به نوشتههای مناسب تبدیل نمود.
دلیل دیگر این کار استفاده از متن تصویر برای نمایه[^index]کردن آن است. یعنی با توجه به متن تصویر متوجه شویم که تصویر نمایانگر چه محلی میباشد.
# کارهای مرتبط
در سال های اخیر پیشرفت قابل توجهی در تشخیص متن در تصاویر صحنه صورت گرفته است. به طور مختصر به چند کار انجام شده در این حوزه اشاره می`کنیم :
*کیم و همکارانش *[3] روشی را که تر کیبی از SVM و CAMSHIFT است را پیشنهاد دادند. SVM برای تحلیل خواص بافت متون، مورد استفاده قرار میگیرد. ویژگیهای بافت ، با شدت پیکسلهای خام که به طور مستقیم به SVM تغذیه میشوند، محاسبه میگردند و مناطق متن با استفاده از الگوریتم CAMSHIFT به وسیله نتایج تجزیه و تحلیل بافت، شناسایی می`شوند.
*پان و همکارانش *[4] روشی ترکیبی را ارائه کردهاند. این روش دارای سه مرحله اصلی پیشپردازش، تحلیل مولفه همبند و گروهبندی متن است. در ابتدا یک آشکارساز منطقه ای برای تشخیص مناطق متن، در هر لایه هرم تصویر، طراحی شده است. سپس مقیاس سازگاری محدوده محلی، برای تولید مولفه های متن کاندید، استفاده می شود. یک فیلد تصادفی شرطی (CRF) برای فیلتر کردن اجزای غیر متن استفاده می گردد. در نهایت، قطعات متن به خطوط متن یا کلمات، با روش بهینه سازی یادگیری، گروه بندی می شوند. این روش برای متون متراکم در تصاویر با شدت کم کار می کند.
الگوریتم پیشنهادی در زیر آمدهاست :
![الگوریتم پیشنهادی سیستم پان](https://boute.s3.amazonaws.com/259-pan.PNG)
*ناصریما موراتی و کومااراسویمی*[5] از روش تبدیل ویولت گسسته هارر [^Harr discrete wavelet transform]و خوشه بندی[^clustering ] استفاده می کردند.در این روش برای استخراج متن از تصویر و برای طبقه بندی دقیق تر قسمت های متنی و غیر متنی، عملیات مورفولوژیکی گنجانده شده است. معمولا بیشتر الگوریتمها تصویر را در مقیاس خاکستری به عنوان ورودی می گیرند، اما در این روش رنگی از رنگ RGB به عنوان ورودی استفاده می شود. لبههای برجسته با استفاده از تبدیل موجک Harr شناسایی می شوند.
در این روش ، ویژگیهای آماری از جمله : میانگین، انحراف استاندارد و انرژی برآورد شده است. خوشه بندی به این منظور استفاده می شود که مجموعه داده ها با توجه به فاصلهها، تقسیم بندی شوند. سپس مناطق غیر متن با استفاده از عملیات مورفولوژیکی حذف می گردند. روش پیشنهادی می تواند نتایج خوشه بندی متن را برای تصویر با پس زمینه یکنواخت به دست آورد، اما وقتی که پسزمینه غیر یکنواخت است، نمیتواند متن را پیدا کند. الگوریتم پیشنهادی به جابهجایی و جهت قرار دادن متن حساس است.
در فلوچارت زیر مراحل این الگوریتم ذکر شدهاند :
![فلوچارت سیستم پیشنهادی ناصریماموراتی و کومااراسویمی](https://boute.s3.amazonaws.com/259-naser.PNG)
*چن و همکارانش *[6] روشی براساس یافتن نواحی کاندید، هرس کردن آنها و گروهبندی ارائه دادند. در این روش، در ابتدا نواحی که امکان وجود متن در آن است، بهدست میآید. سپس با فیلتر براساس مولفههای همبند و SWT، نواحی که متن در آن ها موجود نیست، هرس میشوند و در آخر با اتصال حروف به هم، خطوط به دست میآیند.
مراحل این روش به شکل زیر است :
![فلوچارت سیستم پیشنهادی چن](https://boute.s3.amazonaws.com/259-chen.PNG)
*جانگ و همکارانش*[7] معماری کلی برای سامانههای استخراج اطلاعات متن[^text information extraction] به اختصار TIE ارائه کردهاند. که دومین مرحله این معماری پیدا کردن مکان متن[^ text localization] میباشد.
در فلوچارت زیر، الگوریتم پیشنهادی را مشاهده میکنید :
![فلوچارت سیستم پیشنهادی جانگ](https://boute.s3.amazonaws.com/259-jung.PNG)
رویکردهای موجود برای تشخیص متن میتواند تقریبا به سه دسته تقسیم شود: روشهای مبتنی بر بافت[^texture-based]، روشهای مبتنی بر منطقه [^region-based]و روشهای ترکیبی.
+روشهای مبتنی بر بافت : متون متنی متون را به عنوان یک نوع خاص بافت اداره میکنند و از خواص آنها مانند تنشهای محلی، پاسخهای فیلتر و ضرایب موجک استفاده میکنند. این روشها محاسبهای است که خواستار آن هستیم زیرا تمام مکانها و مقیاسها به طور کامل اسکن میشوند. علاوه بر این، این الگوریتمها عمدتا متون افقی را تشخیص میدهند.
+روشهای مبتنی بر منطقه : روشهای مبتنی بر منطقه ابتدا مناطق متن کاندید را از طریق تشخیص لبه یا خوشهبندی مشخص کرده و سپس مناطق غیرمتنی را با استفاده از قوانین اکتشافی مختلف حذف میکند.
+دسته سوم، روشهای ترکیبی و مخلوطی از روشهای مبتنی بر بافت و مبتنی بر منطقه است.[8]
# آزمایشها
برای انجام این بخش از دادههای موجود در [این سایت](http://www.iapr-tc11.org/mediawiki/index.php?title=MSRA_Text_Detection_500_Database_%28MSRA-TD500%29)استفادهشدهاست.
این پایگاه داده شامل 500 تصویر طبیعی است که با استفاده از یک دوربین جیبی گرفتهشدهاست. مجموعه دادگان موجود به دو قسمت تقسیم میشوند: دادههای آموزشی و دادههای آزمایشی. دادههای آموزشی شامل 300 تصویر است که به طور تصادفی از مجموعه دادگان اصلی انتخاب شده و 200 تصویر باقی مانده، دادههای آزمایشی را تشکیل میدهند.
پروژه انجام شده به این صورت پیادهسازی شدهاست که پردازش تصویر در آن به روش لوله و فیلتر [^pipe and filter] انجام میگیرد. در این روش، ورودی هر مرحله، خروجی مراحل قبل است. بنابراین نیاز به دادههای آموزشی در آن نیست و تمام داده های آموزشی و آزمایشی، به عنوان دادههای آزمایشی استفاده میشود.
الگوریتم پیشنهادی برای این پروژه تقریبا همان روش پیشنهادی چن[6] است. میتوان آن را طبق مراحل زیر پیادهسازی کرد :
1- تصاویر مورد استفاده اغلب به این شکل هستند که نواحی با رنگ یکسان در آنها زیاد است. بنابراین در این مرحله با حذف این نواحی، سعی در نگهداری مکانهایی داریم که متن در آنها موجود است. این کار را با تابع detectMSERFeatures انجام میدهیم.
خروجی این مرحله به شکل زیر میباشد :
![خروجی مرحله 1](https://boute.s3.amazonaws.com/259-1.jpg)
2- در این مرحله به منظور یافتن لبههای [^edges] موجود در تصویر، از تابعedge متلب، استفاده میکنیم که خروجی زیر را میدهد:
![خروجی مرحله 2](https://boute.s3.amazonaws.com/259-2.jpg)
3- ورودی این مرحله، عکس خروجی مرحله پیش است. در این مرحله تلاش میشود تا به وسیله تابع imfill ، نواحی داخلی لبههای تشخیصدادهشده در مرحله قبل، پر گردد.
خروجی این مرحله را در زیر میتوانید مشاهده کنید :
![خروجی مرحله 3](https://boute.s3.amazonaws.com/259-3.jpg)
4- در این مرحله خروجی مرحله اول را با سوم and میکنیم تا خروجی حاصل تنها شامل متن موجود باشد. که خروجی آن به شکل زیر است :
![خروجی مرحله 4](https://boute.s3.amazonaws.com/259-4.jpg)
5- در این مرحله با یافتن نواحی همبند، قسمتهایی از تصویر که متن در آن نیست را هرس میکنیم.تشخیص و هرس کردن این نواحی به ترتیب توسط توابع regionprops و regionFilteredTextMask صورت میگیرد.
خروجی مرحله 5 را در زیر میتوانید ببینید :
![خروجی مرحله 5](https://boute.s3.amazonaws.com/259-5.jpg)
6-حال حروف موجود در عکس را به هم متصل میکنیم تا خطوطی به دست بیایند. در واقع در آخر این مرحله باید تنها خطوط متن در تصویر موجود باشند.این کار توسط تابع imclose متلب انجام میگیرد.
تصویر خروجی این مرحله به شکل زیر میباشد :
![خروجی مرحله 6](https://boute.s3.amazonaws.com/259-6.jpg)
7-در نهایت با به دست آوردن نقاط گوشهای خطوط به دست آمده در مرحله قبل، سعی در کشیدن مستطیل هایی که مشخص کننده متن است، میکنیم.این کار به وسیله تابع step صورت میگیرد.
خروجی نهایی کد، تصویر زیر است :
![خروجی نهایی](https://boute.s3.amazonaws.com/259-7.jpg)
کد پروژه تا این مرحله در [این لینک](https://github.com/aeinsara/Detect-text-in-image2/blob/master/text_detection.m) در سایت گیت هاب قرار گرفتهاست. که بر گرفته از [این کد](https://github.com/Mahdizade/textLocalizaton/blob/master/textLocalizationV2.m) میباشد.
استفاده از این روش همیشه منجر به گرفتن نتیجه درست نمیشود. از جمله نتایج درستی که به وسیله آن از به کار گیری مجموعه دادگان ذکر شده، به دست آمد را میتوانید در زیر ببینید.
![نتیجه خوب 1](https://boute.s3.amazonaws.com/259-ss.jpg)
![نتیجه خوب 2](https://boute.s3.amazonaws.com/259-q.jpg)
![نتیجه خوب 3](https://boute.s3.amazonaws.com/259-vc.jpg)
و از جمله تصاویری که روش مورد نظر موفق به تشخیص درست در آنها نشد، در زیر آمدهاست.
![[نتیجه ضعیف 1](https://boute.s3.amazonaws.com/259-b.jpg)
![نتیجه ضعیف 2](https://boute.s3.amazonaws.com/259-na.jpg)
![نتیجه ضعیف 3](https://boute.s3.amazonaws.com/259-u.jpg)
# کارهای آینده
روش به کار گرفتهشده در بسیاری از مواد، تشخیص مناطق غیر متن را به درستی انجام نمیدهد و درنتیجه در هرس کردن آن نواحی دچار اشتباه میشود. برای افزایش دقت هرس کردن، میتوان از روش SWT استفاده کرد که تصویر را با توجه به ضخامتهای آن نمایش میدهد و در مراحل بعد نواحی که ضخامت تقریبا یکسان نداشته باشند، هرس میشوند. چرا که معمولا متون موجود در یک تصویر دارای ضخامت یکسان بوده و از این طریق امکان تشخیص آن ها بیشتر است. این روش باید جایگزین روش به کار برده شده یعنی خوشهبندی با استفاده از رنگ شود.
# مراجع
[1]T.Kasar, J.Kumar and A.G.Ramakrishnan,“Font and Background Color Independent Text Binarization” Medical Intelligence and Language Engineering Laboratory Department of Electrical Engineering, Indian Institute of Science Bangalore, INDIA - 560 012.
[2]L. Agnihotri and N. Dimitrova, “Text detection for video analysis,” in Proceedings of IEEE International Workshop on Content-Based Access of Image and Video Libraries, pp. 109–113, June 1999.
[3]Kwang In Kim, Keechul Jung, and Jin Hyung Kim, “Texture-Based Approach for Text Detection in Images Using Support Vector Machines and Continuously Adaptive Mean Shift Algorithm”
[4]YF. Pan, X. Hou, CL. Liu, "A Hybrid Approach to Detect and Localize Texts in Natural Scene Images," *IEEE Transactions on Image Processing*, vol. 20, no. 3, pp. 800-813, 2011.
[5]Narasimha Murthy K N, Dr. Y S Kumaraswamy, "A Novel Method for Efficient Text Extraction from Real Time Images with Diversified Background using Haar Discrete Wavelet Transform and K-Means Clustering"
[6]Huizhong Chen, Sam S. Tsai1, Georg Schroth, David M. Chen, Radek Grzeszczuk and Bernd Girod, "Robust text detection in natural images with edge-enhanced Maximally Stable Extremal Regions"
[7] K. Jung, K. I. Kim, A. K. Jain, "Text Information Extraction in Images and Video: a Survey," *Pattern Recognition, Elsevier*, vol. 37, no.5, pp. 977–997, 2004.
[8]Cong Yao, Xiang Bai, Wenyu Liu, Yi Ma, Zhuowen Tu, "Detecting Texts of Arbitrary Orientations in Natural Images"
[9]https://github.com/aeinsara/Detect-text-in-image2
# پیوندهای مفید
+ [Stroke Width Transform, Implementation](http://libccv.org/doc/doc-swt/)
+ [Dataset: MSRA-TD500](http://www.iapr-tc11.org/mediawiki/index.php?title=MSRA_Text_Detection_500_Database_(MSRA-TD500)))
+ [The Street View Text Dataset](http://www.iapr-tc11.org/mediawiki/index.php/The_Street_View_Text_Dataset)
+ [ICDAR 2003 Robust Reading Competitions](http://www.iapr-tc11.org/mediawiki/index.php/ICDAR_2003_Robust_Reading_Competitions)
+ [ICDAR 2013 Robust Reading Competition](http://dag.cvc.uab.es/icdar2013competition/?com=introduction)