پیدا کردن متن در تصویر

در سامانه‌های پیدا کردن متن در تصویر، هدف آن است که مکان متن موجود در تصویر را مشخص کنیم. برای مثال به تصاویر زیر توجه کنید که چگونه مکان متون موجود در آن‌ها مشخص شده است:

نمونۀ تصاویر با مشخص شدن مکان متن

کاربرد اصلی این مسئله به عنوان یک پیش پردازش قبل از تبدیل تصویر به نوشتار یا همان OCR است.

۱. مقدمه

امروزه به دلیل گسترش چشم‌گیر تکنولوژی و در نتیجه دوربین های عکاسی، عکس‌هایی با کیفیت‌های متنوع موجودند که حجم زیادی از داده‌های تصویری را به وجود آورده‌اند.موفقیت بزرگ تلفن‌های هوشمند و خواسته‌های بزرگ در جستجو و درک تصویر مبتنی بر محتوا، تشخیص متن را یک وظیفه حیاتی در تعامل کامپیوتری انسان ساخته‌است. بنابراین استفاده از این تصاویر و پردازش آن‌ها می تواند به ما اطلاعات مفیدی در موارد مختلف بدهد. به همین دلیل پردازش تصاویر در حال حاضر بسیار مفید بوده و توجه بسیاری را به خود جلب کرده‌است. یک نوع از این پردازش‌ها، استخراج متن از تصویر است که برای آن لازم است ابتدا متن موجود در تصاویر تشخیص داده‌شده و سپس تبدیل به نوشتار صورت بگیرد.
در این مقاله هدف پرداختن به تشخیص متن در تصاویر است و در آن به مرحله استخراج متن از تصویر پرداخته‌ نمی شود.
در روش‌های قدیمی برای استخراج متن از تصاویر صفحات پویش1شده مورد بررسی قرار می گرفتند. تصاویر مورد استفاده در این روش باید دارای پس‌زمینه سفید بوده و متن موجود در آنها می بایست به صورت افقی قرار می گرفت تا متون آنها قابل تشخیص باشند. ولی در حال حاضر نیاز است عکس‌ها با پیچیدگی های مختلف مورد بررسی قرار بگیرند و امکان استخراج متن از آن‌ها وجود داشته باشد.[1]

از جمله مشکلات و پیچیدگی های استخراج متن از این تصاویر، عبارت است از :
1- پیچیدگی پس زمینه تصویر2 : وجود پس‌زمینه‌ی پیچیده از دو جهت می‌تواند ایجاد مشکل نماید. اول آنکه برخی از اشیا که دارای ساختار منظم و یا بافت خاصی هستند (مانند درها، پنجره‌ها، خطوط خیابان، برگ درختان و غیره ) به اشتباه متن شناسایی می‌گردند. دوم آنکه زمانی‌که پس‌زمینه‌ی متن تصویری پیچیده‌است نمی‌توان لبه‌های3 متن را به درستی مشخص نمود.

2- سطوح غیر هم‌سطح 4 : ممکن است متن موجود در تصویر، قسمتی در یک سطح و قسمتی در سطح دیگر داشته باشد و یا دارای عمق و بعد بوده باشد. تشخیص این متون مشکل است.

سطوح غیر هم‌سطح

3- جهت متن :متن موجود در تصویر ممکن است دارای زاویه بوده و جهت آن به صورت افقی محض نباشد.

جهت متن

4-روشنایی کنترل نشده 5 : در برخی از تصاویر روشنایی و نورپردازی به صورت ناهموار است به طوری که قسمتی دارای وضوح و روشنایی بیشتر و قسمتی از آن تاریک است.

نورپردازی ناهموار

5- کیفیت پایین : به دلیل استفاده از دوربین‌های معمولی ،کیفیت پایین تصاویر ، یکی از اصلی‌ترین مشکلاتی است که برای پیدا کردن متن در تصویر با آن مواجه هستیم.

6- مشخص نبودن مرز متن و پس‌زمینه: ممکن است متن موجود هم‌رنگ با پس‌زمینه خود بوده و تشخیص لبه آن به سختی صورت بگیرد.

مشخص نبودن مرز متن و پس زمینه

7- تنوع در رسم‌الخط‌ :

تنوع در رسم‌الخط‌

[2]
موارد ذکر شده در بالا مشکلات اصلی برای پیدا کردن متن در تصاویر است. مشکلات دیگری مانند فونت، رنگ و اندازه متون نیز وجود دارد.
حال به بررسی اهمیت پیدا کردن و تشخیص متن در تصویر می‌پردازیم. این کار می‌تواند سببب بهبود روش‌های مورد استفاده در ابزارهای نویسه‌خوان نوری6 شود. با استفاده از بهبود روش‌ها می‌توان عکس‌های تهیه شده با دوربین‌های معمولی را نیز به نوشته‌های مناسب تبدیل نمود.
دلیل دیگر این کار استفاده از متن تصویر برای نمایه‌7کردن آن است. یعنی با توجه به متن تصویر متوجه شویم که تصویر نمایانگر چه محلی می‌باشد.

۲. کارهای مرتبط

در سال های اخیر پیشرفت قابل توجهی در تشخیص متن در تصاویر صحنه صورت گرفته است. به طور مختصر به چند کار انجام شده در این حوزه اشاره می`کنیم :

کیم و همکارانش [3] روشی را که تر کیبی از SVM و CAMSHIFT است را پیشنهاد دادند. SVM برای تحلیل خواص بافت متون، مورد استفاده قرار می‌گیرد. ویژگی‌های بافت ، با شدت پیکسل‌های خام که به طور مستقیم به SVM تغذیه می‌شوند، محاسبه می‌گردند و مناطق متن با استفاده از الگوریتم CAMSHIFT به وسیله نتایج تجزیه و تحلیل بافت، شناسایی می`شوند.

پان و همکارانش [4] روشی ترکیبی را ارائه کرده‌اند. این روش دارای سه مرحله اصلی پیش‌پردازش، تحلیل مولفه همبند و گروه‌بندی متن است. در ابتدا یک آشکارساز منطقه ای برای تشخیص مناطق متن، در هر لایه هرم تصویر، طراحی شده است. سپس مقیاس سازگاری محدوده محلی، برای تولید مولفه های متن کاندید، استفاده می شود. یک فیلد تصادفی شرطی (CRF) برای فیلتر کردن اجزای غیر متن استفاده می گردد. در نهایت، قطعات متن به خطوط متن یا کلمات، با روش بهینه سازی یادگیری، گروه بندی می شوند. این روش برای متون متراکم در تصاویر با شدت کم کار می کند.
الگوریتم پیشنهادی در زیر آمده‌است :

الگوریتم پیشنهادی سیستم پان

ناصریما موراتی و کومااراسویمی[5] از روش تبدیل ویولت گسسته هارر 8و خوشه بندی9 استفاده می کردند.در این روش برای استخراج متن از تصویر و برای طبقه بندی دقیق تر قسمت های متنی و غیر متنی، عملیات مورفولوژیکی گنجانده شده است. معمولا بیشتر الگوریتم‌ها تصویر را در مقیاس خاکستری به عنوان ورودی می گیرند، اما در این روش رنگی از رنگ RGB به عنوان ورودی استفاده می شود. لبه‌های برجسته با استفاده از تبدیل موجک Harr شناسایی می شوند.
در این روش ، ویژگی‌های آماری از جمله : میانگین، انحراف استاندارد و انرژی برآورد شده است. خوشه بندی به این منظور استفاده می شود که مجموعه داده ها با توجه به فاصله‌ها، تقسیم بندی شوند. سپس مناطق غیر متن با استفاده از عملیات مورفولوژیکی حذف می گردند. روش پیشنهادی می تواند نتایج خوشه بندی متن را برای تصویر با پس زمینه یکنواخت به دست آورد، اما وقتی که پس‌زمینه غیر یکنواخت است، نمی‌‌تواند متن را پیدا کند. الگوریتم پیشنهادی به جابه‌جایی و جهت قرار دادن متن حساس است.
در فلوچارت زیر مراحل این الگوریتم ذکر شده‌اند :

فلوچارت سیستم پیشنهادی ناصریماموراتی و کومااراسویمی

چن و همکارانش [6] روشی براساس یافتن نواحی کاندید، هرس کردن آن‌ها و گروه‌بندی ارائه دادند. در این روش، در ابتدا نواحی که امکان وجود متن در آن است، به‌دست می‌آید. سپس با فیلتر براساس مولفه‌های همبند و SWT، نواحی که متن در آن ها موجود نیست، هرس می‌شوند و در آخر با اتصال حروف به هم، خطوط به دست می‌آیند.
مراحل این روش به شکل زیر است :

فلوچارت سیستم پیشنهادی چن

جانگ و همکارانش[7]‌ معماری کلی برای سامانه‌های استخراج اطلاعات متن10 به اختصار TIE ارائه کرده‌اند. که دومین مرحله این معماری پیدا کردن مکان متن11 می‌باشد.
در فلوچارت زیر، الگوریتم پیشنهادی را مشاهده می‌کنید :

فلوچارت سیستم پیشنهادی جانگ

رویکردهای موجود برای تشخیص متن می‌تواند تقریبا به سه دسته تقسیم شود: روش‌های مبتنی بر بافت12، روش‌های مبتنی بر منطقه 13و روش‌های ترکیبی.

+روش‌های مبتنی بر بافت : متون متنی متون را به عنوان یک نوع خاص بافت اداره می‌کنند و از خواص آنها مانند تنش‌های محلی، پاسخ‌های فیلتر و ضرایب موجک استفاده می‌کنند. این روش‌ها محاسبه‌ای است که خواستار آن هستیم زیرا تمام مکان‌ها و مقیاس‌ها به طور کامل اسکن می‌شوند. علاوه بر این، این الگوریتم‌ها عمدتا متون افقی را تشخیص می‌دهند.

+روش‌های مبتنی بر منطقه : روش‌های مبتنی بر منطقه ابتدا مناطق متن کاندید را از طریق تشخیص لبه یا خوشه‌بندی مشخص کرده و سپس مناطق غیرمتنی را با استفاده از قوانین اکتشافی مختلف حذف می‌کند.

+دسته سوم، روش‌های ترکیبی و مخلوطی از روش‌های مبتنی بر بافت و مبتنی بر منطقه است.[8]

۳. آزمایش‌ها

برای انجام این بخش از داده‌های موجود در این سایتاستفاده‌شده‌است.
این پایگاه داده شامل 500 تصویر طبیعی است که با استفاده از یک دوربین جیبی گرفته‌شده‌است. مجموعه دادگان موجود به دو قسمت تقسیم می‌شوند: داده‌های آموزشی و داده‌های آزمایشی. داده‌های آموزشی شامل 300 تصویر است که به طور تصادفی از مجموعه دادگان اصلی انتخاب شده و 200 تصویر باقی مانده، داده‌های آزمایشی را تشکیل می‌دهند.
پروژه انجام شده به این صورت پیاده‌سازی شده‌است که پردازش تصویر در آن به روش لوله‌ و فیلتر 14 انجام می‌گیرد. در این روش، ورودی هر مرحله، خروجی مراحل قبل است. بنابراین نیاز به داده‌های آموزشی در آن نیست و تمام داده های آموزشی و آزمایشی، به عنوان داده‌های آزمایشی استفاده‌ می‌شود.

الگوریتم پیشنهادی برای این پروژه تقریبا همان روش پیشنهادی چن[6] است. میتوان آن را طبق مراحل زیر پیاده‌سازی کرد :
1- تصاویر مورد استفاده اغلب به این شکل هستند که نواحی با رنگ یکسان در آنها زیاد است. بنابراین در این مرحله با حذف این نواحی، سعی در نگهداری مکان‌هایی داریم که متن در آن‌ها موجود است. این کار را با تابع detectMSERFeatures انجام می‌دهیم.
خروجی این مرحله به شکل زیر می‌باشد :

خروجی مرحله 1

2- در این مرحله به منظور یافتن لبه‌های 15 موجود در تصویر، از تابعedge متلب، استفاده می‌کنیم که خروجی زیر را می‌دهد:

خروجی مرحله 2

3- ورودی این مرحله، عکس خروجی مرحله پیش است. در این مرحله تلاش می‌شود تا به وسیله تابع imfill ، نواحی داخلی لبه‌های تشخیص‌داده‌شده در مرحله قبل، پر گردد.
خروجی این مرحله را در زیر می‌توانید مشاهده کنید :

خروجی مرحله 3

4- در این مرحله خروجی مرحله اول را با سوم and می‌کنیم تا خروجی حاصل تنها شامل متن موجود باشد. که خروجی آن به شکل زیر است :

خروجی مرحله 4

5- در این مرحله با یافتن نواحی همبند، قسمت‌هایی از تصویر که متن در آن نیست را هرس می‌کنیم.تشخیص و هرس کردن این نواحی به ترتیب توسط توابع regionprops و regionFilteredTextMask صورت می‌گیرد.
خروجی مرحله 5 را در زیر می‌توانید ببینید :

خروجی مرحله 5

6-حال حروف موجود در عکس را به هم متصل می‌کنیم تا خطوطی به دست بیایند. در واقع در آخر این مرحله باید تنها خطوط متن در تصویر موجود باشند.این کار توسط تابع imclose متلب انجام می‌گیرد.
تصویر خروجی این مرحله به شکل زیر می‌باشد :

خروجی مرحله 6

7-در نهایت با به دست آوردن نقاط گوشه‌ای خطوط به دست آمده در مرحله قبل، سعی در کشیدن مستطیل هایی که مشخص کننده متن است، می‌کنیم.این کار به وسیله تابع step صورت می‌گیرد.
خروجی نهایی کد، تصویر زیر است :
خروجی نهایی

کد پروژه تا این مرحله در این لینک در سایت گیت هاب قرار گرفته‌است. که بر گرفته از این کد می‌باشد.

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

نتیجه خوب 1

نتیجه خوب 2

نتیجه خوب 3

و از جمله تصاویری که روش مورد نظر موفق به تشخیص درست در آن‌ها نشد، در زیر آمده‌است.

![نتیجه ضعیف 1

نتیجه ضعیف 2

نتیجه ضعیف 3

۴. کارهای آینده

روش به کار گرفته‌شده در بسیاری از مواد، تشخیص مناطق غیر متن را به درستی انجام نمی‌دهد و درنتیجه در هرس کردن آن نواحی دچار اشتباه می‌شود. برای افزایش دقت هرس کردن، می‌توان از روش 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

۶. پیوندهای مفید


  1. scan

  2. complex backgrounds

  3. edge

  4. nonplaner surfaces

  5. uneven lightening

  6. optical character recognition

  7. index

  8. Harr discrete wavelet transform

  9. clustering

  10. text information extraction

  11. text localization

  12. texture-based

  13. region-based

  14. pipe and filter

  15. edges

سید ابوالفضل مهدی زاده

با عرض سلام و خسته نباشید
شرح نوشته شده از مسئله در مقدمه مناسب است. خواننده تقریبا با مسئله و چالش‌های آن آشنا می‌شود. می‌توانستید مطالب دیگری هم به این بخش اضافه کنید. برای مثال کاربردهای این مسئله را بیشتر شرح می‌دادید.
در متن شما تاثیر ترجمه در بخشی از نوشته‌ها قابل تشخیص است. هر چیزی که خودتان متوجه شدید را بنویسید. متن دارای ایرادات ویرایشی است. برای مثال یک‌جا پاورقی را به درستی وارد نکرده‌اید. ارجاعات با دقت صورت نگرفته است. در کارهای مرتبط ارجاعات را برای تمامی قسمت‌ها ذکر کنید.
در قسمت کارهای مرتبط توضیحات شما بسیار کم و مختصر است. به نظرم می‌توانستید کارهای بیشتری را بررسی کنید. موضوع انتخابی شما در حوزه پردازش تصاویر قرار دارد. قطعا کارهای مرتبطی که ذکر کرده‌اید دارای تصاویر، فلوچارت و نمودارهای خوبی در متن مقاله هستند. بهتر است آن‌ها را ذکر کنید. استفاده از تصاویر، نمودار و فلوچارت برای نمایش مراحل الگوریتم‌ها بسیار مفید است. این کار باعث فهم بهتر خواننده خواهد شد. نتایج ذکر شده در مقالات را هم ذکر کنید. قطعا در مقالات مجموعه داده‌ای را انتخاب و عملکرد روش خود را گزارش کرده‌اند. روش‌های گزارش دهی از عملکرد الگوریتم پیشنهادی را هم مشخص کنید و در صورت نیاز آن‌ها را نیز توضیح دهید.
امیدوارم موارد ذکر شده را رعایت کرده و کیفیت کار و گزارش خود را در مراحل بعد بالا ببرید.
با احترام

رد شده

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

سید ابوالفضل مهدی زاده

با سلام و خسته نباشید.

لینک داده‌ها درست نیست. فکر کنم پرانتز آخرش افتاده. روش کار به صورت لوله‌ای لفظ جالبی نیست. به طور کلی معماری سیستم‌های پردازش تصویر pipe and filter یا همان لوله و فیلتر است. در کار شما هیچ یادگیری وجود ندارد. بنابراین تمام داده به عنوان ورودی روش استفاده می‌شود. پانویس edges مشکل دارد.
کد شما برای این فاز کامل نیست. به نظرم هنوز خیلی برای خروجی گرفتن کار دارید. امیدوارم برای فاز بعد کد شما کامل باشد. حتما از پیاده‌سازی‌های دیگران استفاده کنید. به نظرم نیاز نیست دوباره چرخ را اختراع کنید. قطعا استفاده از نتایج کار دیگران و اشاره کردن به آن‌ها در گزارش هیچ ایرادی ندارد.

تایید شده

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

تایید شده

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

سید ابوالفضل مهدی زاده
تایید شده

سلام،
مقدمه خوب بود هدف پروژه را به خوبی مشخص می کند اما در بخش پیاده سازی و آزمایش کدی که قرار دادید کامنت گذاری نشده و درباره ی کد و الگوریتم توضیح کافی ندادید، همچنین مطرح نکردید برای بهبود نتایج چه کردید.

تایید شده

سلام.
شما مطالعه خوبی بر مساله‌‌ای که انتخاب کرده‌اید داشتید، چند نمونه را ذکر کردید و ادبیات مساله را شفاف مطرح کردید.بهتر بود که اولا از منابع جدیدتری استفاده کنید و دوم این‌که مراحل روش‌های جدیدتری که انجام شده است را بررسی کنید.الگوریتم پیشنهادی برای این پروژه روش پیشنهادی چن بوده است وروش های دیگری توجه نشده است بهتر بود تا علاوه بر بیان روش های دیگر آن ها را باهم مقایسه میکردید تا وقتی خواننده پروژه شما را میخواند در نهایت بداند که کدام روش برای حل این مساله پیشنهاد میشود وبهتر است و روش ها از نظر چه فاکتور هایی نسبت به هم ضعف یا قوت دارند . واینکه استفاده از کدام یک از روش ها مفیدتر خواهد بود.خوب بود که علاوه بر استفاده از عکس از فلوچارت سیستم پیشنهادی چن ویا فلوچارت سیستم پیشنهادی جانگ برداشت خود را مینوشتید وآن ها را توضیح دقیقی میدادید تا خواننده کاملا متوجه آن ها شود.در بعضی از قسمت ها رعایت نیم‌فاصله‌ها به درستی انجام نشده است (برای مثال جمله ی برای انجام این بخش از داده‌های موجود در این سایتاستفاده‌شده‌است).که می توانستید پروژه را بازبینی کلی کنید واین نواقص را برطرف سازید.بهتر بود کد خود را کامنت گذاری میکردید تا دیگران هنگام خواندن کد شما متوجه آن شوند.میتوانستید راهنمایی هایی مرتبط با این مساله وکدتان را هم در فایل readme در گیت هاب قرار میدادید.موفق باشید.

تایید شده

با سلام
توضیحات خوب بود. تصاویر استفاده شده در متن به فهم بهتر پروژه بسیار کمک می‌کند. جا داشت روش‌های بهبود نتایج بیشتر مورد بررسی قرار می‌گرفتند. از نظر نگارشی نیز مشکل خاصی وجود ندارد.
خسته نباشید

تایید شده

سلام
مسئله به خوبی شرح داده شده و مشکلات آن بیان شده. برای فهماندن مطلب به خوبی از تصاویر استفاده شده است. آزمایش‌ها ونتایج آنها مرحله به مرحله نشان داده شده. بهتر بود برای یک data set مشخص این کار انجام می‌شد تا درصد درستی الگوریتم مشخص شود.
خسته نباشید