پردازش تصویر

همبستگي در پردازش تصویر MATLAB

همبستگي
نحوه ي محاسبه ي همبستگي مانند كانولوشن است با اين تفاوت كه در محاسبات آن ديگر لازم نيست كرنل همبستگي را بچرخانيم. بنابراين، اگر مثال ارائه شده در بخش قبل (براي كانولوشن) را بخواهيم براي همبستگي مجدداً در نظر بگيريم، شكل اخير به صورت زير اصلاح مي شود:

663

فيلتر كردن تصاوير به كمك دستور imfilter
استفادهبراي انجام فيلتر كردن (چه كرنل كانولوشن و چه كرنل همبستگي) مي توان از دستور imfilter كرد. براي مثال، اگر بخواهيم يك فيلتر متوسط گير را پياده سازي كنيم، به صورت زير مي توان عمل كرد:

I = imread(‘coins.png’);
h = ones(5,5) / 25;
I2 = imfilter(I,h);
imshow(I), title(‘Original Image’);
figure, imshow(I2), title(‘Filtered Image’)

نتیجه:

664

انواع داده اي
نوع داده ايِ تصوير خروجي همان نوع داده اي تصوير ورودي است. دستور imfilter محاسبات خود را به صورت مميز شناور و با دقت مضاعف انجام مي دهد اما حاصل نهايي را با توجه به نوع تصوير خروجي و محدوده ي آن، برش مي زند و يا اين كه گرد مي كند. به دليل اين عمل برش، ممكن است شما بخواهيد ابتدا نوع تصوير را تغيير دهيد تا در نتيجه ي فيلتر، اطلاعات كمتري را از دست دهيد. براي مثال در برنامه ي زير تصوير ورودي از نوع double است به همين دليل خروجيِ دستور  imfilter  مقادير منفي را به خود مي گيرد:

>>A = magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>>h = [‐1 0 1]
h =
‐1 0 1
>>imfilter(A,h)
ans =
24 ‐16 ‐16 14 ‐8
5 ‐16 9 9 ‐14
6 9 14 9 ‐20
12 9 9 ‐16 ‐21
18 14 ‐16 ‐16 ‐2

اما اگر تصوير ورودي را از نوع 8 UINT تعريف كنيم، به دليل عمل برش، خروجي فيلتر مقادير منفي نخواهد داشت:

>>A = uint8(magic(5));
>>imfilter(A,h)
ans =
24 0 0 14 0
5 0 9 9 0
6 9 14 9 0
12 9 9 0 0
18 14 0 0 0

ملاحظه مي كنيد كه مقادير منفي به صفر برش زده مي شوند.

نویسنده: دکتر هادی گرایلو

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *