درس پردازش تصویر — تبدیل عکس به متن در پایتون


نویسنده:
دسته‌ها: نقد و بررسی
سه شنبه 17 اسفند 1400
درس پردازش تصویر

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

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

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

چطور می توانیم درس پردازش تصویر را شروع کنیم؟

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

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

پردازش تصویر شامل چه مواردی می شود؟

برای درک بهتر این موضوع باید بدانید که تصویر چیست و سپس به سراغ مفهوم پردازش تصویر برویم. در ادامه به این مفهوم خواهیم پرداخت.

تصویر چیست؟

یک تصویر را می‌توان به عنوان یک تابع دو بعدی F(x,y) که در آن x و y مختصات فضایی هستند نشان داد. دامنه F در یک مقدار خاص x,y به عنوان شدت تصویر در آن نقطه شناخته می‌شود. اگر x، y و مقدار دامنه محدود باشد، آن را تصویر دیجیتال می‌نامیم. آرایه‌ای از پیکسل‌ها است که در ستون‌ها و ردیف‌ها مرتب شده‌اند. پیکسل‌ها عناصر یک تصویر هستند که حاوی اطلاعاتی در مورد شدت و رنگ هستند. یک تصویر همچنین می‌تواند به صورت سه بعدی نمایش داده شود که در آن x، y و z به مختصات فضایی تبدیل می‌شوند. پیکسل‌ها در قالب یک ماتریس مرتب شده‌اند. البته تعاریف مختلف دیگری نیز از تصویر وجود دارد که به آن نمی‌پردازیم.

پردازش تصویر چیست؟

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

الگوریتم های کلاسیک در پردازش تصویر

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

1.پردازش تصویر مورفولوژیکی

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

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

  • Dilation: در این عملیات پیکسل‌ها به مرزهای جسم در یک تصویر اضافه می‌شوند.
  • Erosion:الگوریتم در این عملیات پیکسل‌ها را از مرز شی حذف می‌کند.

تعداد پیکسل‌های حذف شده یا اضافه شده به تصویر اصلی به اندازه عنصر ساختار بستگی دارد.

درس پردازش تصویر
درس پردازش تصویر

2. پردازش تصویر گاوسی

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

از جمله مباحثی که نیاز است برای یادگیری پردازش تصویر با آن آشنایی لازم را داشته باشید پردازش تصویر با اوپن سی وی است. برای دسترسی به دوره آموزشی این مبحث در فرادرس بر روی لینک زیر کلیک کنید.

3. تبدیل فوریه در پردازش تصویر

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

  • Magnitude
  • Spatial frequency
  • Phase

تصویر در حوزه فرکانس به صورت زیر است:

درس پردازش تصویر

فرمول تبدیل فوریه گسسته دو بعدی به صورت زیر است:

درس پردازش تصویر

فرمول تبدیل فوریه گسسته دو بعدی به صورت زیر است:

درس پردازش تصویر

در فرمول فوق f(x,y) تصویر را نشان می دهد.

4. Edge Detection در پردازش تصویر

Edge detection یک تکنیک پردازش تصویر برای یافتن مرزهای اشیاء درون تصاویر است. این تکنیک با تشخیص ناپیوستگی در روشنایی کار می‌کند. این تکنیک می‌تواند در استخراج اطلاعات مفید از تصویر بسیار مفید باشد زیرا بیشتر اطلاعات شکل در لبه‌ها محصور شده است. روش‌های کلاسیک تشخیص لبه با تشخیص ناپیوستگی در روشنایی کار می‌کنند.

در صورت تشخیص نویز در تصویر در حین تشخیص تغییرات سطوح خاکستری، می‌تواند به سرعت واکنش نشان دهد. لبه‌ها به عنوان ماکزیمم محلی گرادیان تعریف می‌شوند.

5.پردازش تصویر موجک

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

استخراج متن از عکس در درس پردازش تصویر پایتون

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

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

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

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

Python-tesseract در حقیقت یک ابزار تشخیص کاراکتر نوری (OCR) برای پایتون است. یعنی متنی که در تصاویر تعبیه شده است را می‌شناسد و می‌خواند. Python-tesseract یک پوشش برای موتور Tesseract-OCR گوگل است. همچنین به‌عنوان یک اسکریپت فراخوانی مستقل برای تسراکت مفید است، زیرا می‌تواند همه انواع تصاویر را که توسط کتابخانه‌های تصویربرداری Pillow و Leptonica پشتیبانی می‌شوند، از جمله jpeg، png، gif، bmp، tiff و غیره بخواند. علاوه بر این، اگر به عنوان یک اسکریپت استفاده شود، Python-tesseract متن شناسایی شده را به جای نوشتن آن در یک فایل چاپ می‌کند.

شما می‌توانید برای یادگیری این کتابخانه جذاب به منبع اصلی آن مراجعه کنید. برای این کار کافیست عبارت Python-tesseract را در موتور جستجوی گوگل جستجو کنید. برای نصب این کتابخانه نیز کافیست عبارت زیر را در محیط CMD و یا پاورشل در ویندوز تایپ کنید. همچنین از این دستور می‌توانید در ترمینال مک و لینوکس نیز استفاده کنید.

از جمله دیگر کتابخانه‌های مهم در زبان پایتون Pillow است. شما می‌توانید برای یادگیری این کتابخانه به دوره آموزشی موجود در لینک زیر مراجعه کنید.

نوشتن اسکریپت

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

در خط اول همانطور که پیداست باید کتابخانه pytesseract را به برنامه خودمان وارد کنید. برای این کار باید از کلمه کلیدی import استفاده کنیم. همچنین باید نام کتابخانه مورد نظر را که در این مثال pytesseract است را وارد برنامه خودمان کنیم. همچنین اگر با زبان برنامه‌نویسی پایتون آشنایی داشته باشید می‌دانید که این زبان برنامه‌نویسی در آخر خطوط احتیاج به استفاده از ; ندارد و تنها کافیست در انتهای هر خط یک بار کلید enter را فشار دهید.

در این خط ما فایل tesseract را به برنامه معرفی کرده‌ایم. خواندن این فایل با دسترسی r که مخفف کلمه read است صورت می‌گیرد. این موضوع به این معنی است که برنامه ما تنها امکان خواندن این فایل‌ها را دارد. در این صورت نمی‌تواند چیزی در آن بنویسید یا آن را تغییر دهید و تنها می‌توانید اطلاعات tesseract را بخوانید که برای ما کافی است.

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

این خط کد کمی متفاوت‌تر است. در این خط شما باید فایل تصویر خودتان را به برنامه معرفی کنید. بهتر است این فایل را با پسوند png ایجاد کنید تا مشکلی پیش نیاید و برنامه به درستی کار کند. دسترسی این فایل نیز به صورت فقط خواندنی تعریف شده است. علت این موضوع این است که شما اجازه انجام ادیت بر روی تصاویر در برنامه را ندارید. اگر هدف شما در استفاده از این تکنیک چیز دیگری است می‌توانید از این خط کد استفاده نکنید و تنها از تابع pytesseract.image_to_string بهره‌برداری مورد نظر خودتان را انجام دهید.

این اسکریپت به صورت کلی تنها یک عکس را در یک دایرکتوری مشخص دریافت کرده و متون داخل آن را استخراج می‌کند. همانطور که دیدیم این کار بسیار ساده بود. تنها با داشتن دانش پایتون می‌توانید این برنامه را برای استفاده‌های مختلف برای خودتان ایجاد کنید. اسکریپت نوشته شده در پایین همین پاراگراف به صورت کامل در دسترس است.

سخن آخر در درس پردازش تصویر

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

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

اگر از مطالعه این مقاله لذت بردید در بخش نظرات ما را از انتقادات و پیشنهادات خودتان با خبر کنید.

مطالب زیر را حتما بخوانید

آموزش canvas به صورت گام به گام و تصویری

در این مقاله‌ای که در ادامه خواهید خواند، به آموزش canvas خواهیم پرداخت. در سال‌های اخیر به دلیل شیوع ویروس...

آموزش جنگو رایگان — راهنمای صفر تا صد به زبان ساده

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

آموزش برنامه نویسی لاراول – آموزش ساخت اولین پروژه

در این مقاله سعی داریم به آموزش برنامه نویسی لاراول بپردازیم. لاراول از زمان عرضه خود در سال 2011 رشد بسیار چشمگیری...

آموزش برنامه نویسی اندروید با پایتون – گام به گام و تصویری

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

دیدگاهتان را بنویسید

دیدگاهتان را بنویسید