From Wikipedia, the free encyclopedia
در پردازش تصویر، یک هسته, ماتریس کانولوشن, یا پوشش یک ماتریس کوچک است که روی تصویر اعمال میشود. (تصویر، یک ماتریس است که در هریک از درایههای آن مقادیر رنگ مربوط به آن درایه بسته به سیستم رنگی استفاده شده، قرارگرفته اند). هسته یا کرنال، یک ماتریس است که با ضرب هر آرایه آن در آرایه معادلاش در هر بلوک از تصویر اصلی، عددی حاصل میشود که در تصویر نهایی جایگزین پیکسل تصویر اصلی است.[1]
از هسته برای ایجاد فیلترهای مختلف روی عکس استفاده میکنند، از دیگر کاربردهای آن در یادگیری ماشین است. هر هسته برای یک کار خاص مفید است مثل مات کردن، تیز کردن، برجسته سازی، تشخیص لبه، و کارهای دیگر.
این تغییرات روی تصویر با عبور دادن ماتریس هسته (که از ماتریس تصویر اندازهٔ کوچکتری دارد) از تصویر یا میانگینگیری کانولوشن بین هسته و تصویر صورت میگیرد.
بسته به مقادیر عنصر، یک هسته میتواند محدوده گستردهای از تأثیرات را داشته باشد.
در بالا تنها مثالهای کمی از تأثیراتی که با استفاده از کانولوشن بین کرنلها و تصاویر قابل انجام است نمایش داده شدهاست.
منشأ موقعیت یک خانه از هسته است که بالاتر از پیکسل خروجی فعلی است. منشأ میتواند خارج از هسته باشد، اگرچه معمولاً یکی از عناصر هسته است.
در مورد هستهٔ متقارن منشأ معمولاً عنصر مرکزی است، در این صورت هسته باید ماتریسی فرد-فرد باشد.
کانولوشن عمل اضافه کردن هر خانه (پیکسل) از عکس به خانههای اطرافش (پیکسلهای همسایهٔ محلی) است که توسط هسته وزن دهی شدهاند.
این عمل مربوط به حالتی از کانولوشن در ریاضیات است.
باید به این نکته توجه شود که عمل ضرب ماتریسها که در کانولوشن انجام میشود همان عمل ضرب تعریف شده روی ماتریسها نیست، گرچه مشابهاْ آن را با * نشان میدهیم.
برای مثال، فرض کنید دو ماتریس ۳ – مربعی K و M را داشته باشیم که K ماتریس هسته و M قسمتی از تصویر مورد نظر ما باشد، کانولوشن، عملیات وارون کردن ماتریس هسته به صورت افقی و عمودی و سپس ضرب نظیر به نظیر درایههای دو ماتریس و در نهایت جمع همهٔ آنهاست. البته اگر ماتریس هسته متقارن باشد نیازی به وارون کردن افقی و عمودی ماتریس نیست زیرا در این حالت هستهٔ وارون شده با هستهٔ اصلی برابر است.
ماتریسهای K و M را به شکل زیر داریم:
ماتریس K را به صورت عمودی و افقی وارون میکنیم، هستهٔ جدید به شکل روبروست:
گام بعدی ضرب نظیر به نظیر درایههای دو ماتریس و جمع همهٔ آنهاست:
عنصر قرار گرفته در مختصات (۲٬۲) از تصویر حاصل (یعنی عنصر مرکزی)، یک ترکیب وزن دار از تمام درایههای ماتریس تصویر است، که توسط هسته وزن دهی شدهاند:
درایههای دیگر هم بهطور مشابه مقدار دهی میشوند، به این صورت که مرکز هسته را روی نقاط مرزی تصویر قرار میدهیم و یک حاصل جمع وزن دار را محاسبه میکنیم.
مقادیر یک پیکسل داده شده از تصویر حاصل، با ضرب هر مقدار از ماتریس هسته در مقادیر پیکسلهای متناظر آن در ماتریس تصویر اولیه محاسبه میشوند.
این عمل میتواند توسط شبه کد زیر به صورت یک الگوریتم نشان داده شود:
for each image row in input image:
for each pixel in image row:
set accumulator to zero
for each kernel row in kernel:
for each element in kernel row:
if element position corresponding* to pixel position then
multiply element value corresponding* to pixel value
add result to accumulator
endif
set output image pixel to accumulator
اگر هسته متقارن بود منشأ هسته را روی پیکسل فعلی قرار دهید، بنابراین هسته توسط پیکسلهای مجاور هم پوشانی خواهد داشت. حال هر یک از عناصر هسته را با پیکسلی از تصویر که متناظر ان است ضرب کرده و همهٔ مقادیر بدست آمده را باهم جمع کنید.
اگر هسته متقارن نباشد باید قبل از محاسبهٔ کانولوشن همانند قسمت بالا، ماتریس هسته به صورت افقی و عمودی برعکس شود.[2]
در انجام کانولوشن روی تصویر ممکن است گاهی به پیکسلهایی در خارج از مرز تصویر نیاز داشته باشیم؛ بنابراین، دو راه برای مدیریت حاشیهٔ تصاویر داریم:
از هر پیکسلی در تصویر حاصل که نیاز به مقادیری در بیرون از حاشیهها داشته باشد صرف نظر میشود، در واقع عبور هسته از تصویر به صورتی خواهد بود که درایهٔ اول ماتریس هسته در موقعیت (۱٬۱) بر روی درایهٔ اول ماتریس تصویر بیافتد و هسته از تصویر بیرون نزند. این روش میتواند باعث شود که تصویر خروجی کمی کوچکتر شود و لبههای آن بریده شوند.
در این روش هسته را به صورتی از ماتریس تصویر عبور میدهیم که درایهٔ مرکزی هسته (منشأ) بر روی درایهٔ اول ماتریس تصویر بیافتد. در این حالت هسته میتواند از ماتریس تصویر بیرون بزند که مقادیر خارج از تصویر میتوانند به انواع زیر مدیریت بشوند:
مقادیر خارج از تصویر در این حالت برابر با صفر قرار داده میشوند. میتوانیم در این روش به جای صفر از هر مقدار ثابت و دلخواه دیگر هم استفاده کنیم.
نزدیکترین پیکسلها به لبههای تصویر به اندازهٔ لازم گسترش داده میشوند تا مقادیر مورد نیاز برای کانولوشن را فراهم کنند. پیکسلهای کنج را در ابعاد یک گوهٔ ۹۰ درجه گسترش میدهیم، بقیهٔ پیکسلها به صورت خطی گسترش داده میشوند. در این روش در واقع حاشیههای تصویر را تکرار میکنیم.
تصویر در حاشیههایش اینه وار منعکس میشود. برای مثال، بجای خواندن پیکسلی که سه واحد خارج از لبه است پیکسلی که سه واحد داخل لبه است خوانده میشود
تصویر در واقع پوشانده میشود (تکرار تصویر به صورت یکپارچه و بدون مرز) و برای این کار از مقادیری که در حاشیه یا کنج مخالف هستند استفاده میشود. در این روش دور تصویر اصلی را با تکرار خود تصویر پر میکنیم.
نمونههایی از انواع کانولوشن با حاشیه گذاری:
نرمال سازی به عنوان تقسیم هر عنصر در هسته بر جمع همهٔ عناصر هسته تعریف میشود که در نتیجه، جمع عناصر یک هستهٔ نرمال شده برابر با یک میشود، این کار باعث میشود که روشنایی تصویراصلاح شده به اندازه روشنایی تصویر اصلی باشد.
برای مثال ماتریس هستهٔ استفاده شده در Box Blur را در نظر بگیرید:
اگر همهٔ عناصر آن را جمع کنیم عدد ۹ بدست میآید، بنابراین هسته نرمال شده نیست و برای اصلاح آن باید همهٔ درایههای ماتریس را بر ۹ تقسیم کرد:
حال جمع عناصر برابر ۱ میشود پس ماتریس هسته نرمال شدهاست.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.