پردازش تصویر

فشرده کردن تصویر در متلب

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

فشره سازي تصوير

به منظور كاهش سايز تصوير در زمان ارسال مي توانيد از فشرده سازي تصوير استفاده كنيد. تصوير اصلي تعداد زيادي از ويژگي هاي تصوير اصلي را با خود به همراه دارد اما به پهناي باند كمي نياز دارد.به منظور فشرده كردن تصوير شما مي توانيد از بلوك DCT دوبعدي و سلكتور استفاده كنيد. براي شروع كار يك مدل جديد ايجاد كنيد و بلوك هايي مطابق جدول1 را وارد مدل خود كنيد. شكل2 مدل ايجاد شده را نشان مي دهد.

بلوك Image From Fileرا مي توانيد از قسمت Video and Image Processing كتابخانه سـيـمــولـيـنــك و در بـخــشSources پـيــدا كـنـيــد. بـلــوك Block Processingدر قسمـت Video and Image Processing كـتـابـخـانـه سـيمولينك و در بخش Utilities قرار دارد و بلوك‌Video Viewer نيز در قسمت  Video and Image Processing كتابخانه سيمولينك و در بخش Sinks موجود است. موقعيت بلوك ها در شكل1 نشان داده شده است.

حال با توجه به شكل1 مي توانيد روي هر بلوك دبل كليك كنيد و پارامترهاي آن را به صورت دلخواه تغيير دهيد و در نهايت روي گزينه OK كليك كنيد. از بلوك Image From File به منظور وارد كردن تصوير به داخل مدل استفاده كنيد و پارامترهاي آن را به صورت زير تنظيم كنيد. با توجه به اين‌كه تصوير ورودي cameraman اسـت و ايـن تصوير جزء تصويرهاي پيش فرض MATLAB و فرمت آن به صورت tif است، كافي است در صفحه اصلي (Main Pane) و در قـسـمــت File name عبـارت cameraman.tif را تـايـپ كنيد. در صفحه انواع داده (Data Types pane) و در قسمت نوع داده خروجي (Output data type) عبارت double را تايپ كنيد.

از  بـلـوك Video Viewer بـه مـنـظـور نـمـايـش تصوير خروجي استفاده كنيد. تصوير ورودي يـك تصـويـر 256*256 بـا مقـادير صحيح بدون عــلامــت اســت. پــارامـتــرهــاي ايـن بلـوك را بـه صــورت پـيــش فـرض در نـظـر بـگـيـريـد. بـلـوك Block Processingزير ماتريس هاي 8*8 از تصوير اصلي را براي پردازش ايجاد مي كند. به منظور مشاهده پنجره تظيمات بر روي اين بلوك دو بار كليك كنيد در اين صورت پنجره اي به صورت شكل2 (سمت چپ) باز مي شود. در اين پنجره بايد تعداد ورودي و خروجي و همچنين سايز بلوك و ميزان همپوشاني بين بلوك ها مشخص شود كه در اين حالت خاص تعداد ورودي و خروجي 1 ، سايز ماسك 8*‌8 و ميزان همپوشاني [0 0]‌ در نظر گرفته شده است. از اين بلوك زماني استفاده مي شود كه تصوير ورودي بزرگ بوده و پردازش بر پايه بلوك باشد. به منظور مشاهده زير سيستم بلوكBlock Processing بر روي بلوك مورد نظر  دبل كليك كنيد و روي Open Subsystemكليك كنيد.با كليك كردن بر روي Open Subsystem پنجره اي به صورت شكل 2 (سمت راست) ظاهر مي‌شود. شما مي توانيد به منظور پردازش زير ماتريس ها بلوك هايي را وارد زير سيستم كنيد.

 

در ادامه بلوك هايي به صورت جدول2 را وارد زير سيستم كنيد.بلوك -D DCT2 را مي‌توانيد از قسمت Video and Image Processing كتابخانه سيمولينك و در بخش Transforms پيدا كنيد. بلوك Selector در قسمت Simulink كتابخانه سيمولينك و در بخش Signal Routing قرار دارد. بلوك هاي ذكر شده در بالا را به صورت شكل 3 به هم متصل كنيد.

بلوك -D DCT2 تبديل DCT دو بعدي هر زير سيستم را محاسبه مي كند. اين پردازش حداكثر انرژي تصوير را در گوشه بالا و سمت چپ از ماتريس حاصل نشان مي دهد. پارامترهاي اين بلوك را به صورت پيش فرض قرار دهيد. همچنين از بلوك Selector به منظور استخراج گوشه بالا و سمت چپ زير ماتريس استفاده كنيد. با دبل كليك كردن روي اين بلوك پارامترهاي اين بلوك را به صورت شكل4 يا شكل5  تنظيم كنيد.

 

 

 

بنابراين مي توانيد از بلوك Selector به منظور فشرده سازي تصوير با استخراج گوشه بالا و سمت چپ زير سيستم، كه شامل ضرايبي است كه داراي حداكثر انرژي است استفاده كنيد. براي انتقال تصوير كافي است به جاي انتقال كل زير سيستم تنها همين بخش را كه داراي پهناي باند كمتري است ارسال كنيد.

 

منبع : http://www.iranbmemag.com

پیدا کردن تعداد objects

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

قسمت اول : تصویر را در مطلب لود می کند و نمایش  می دهد.

قسمت دوم : rgb2gray تصویر را سیاه و سفید می کند . Thresholdمرزها را مشخص می کند ، که برای این کار باید از تابع graythresh استفاده کرد .im2bw تصویر را باینری می کند.

قسمت سوم :  نویز تصویر را از بین می برد . bwareaopen پیکسل های کمتر از 30 را پاک می کند و فواصل خالی (Gap) را با تابع strel پر می کند

strel(‘disk’,2)

یک دایره به شعاع 2 تشکیل می دهد که شعاع عددی غیر منفی باید باشد و عدد وسط آن دایره  را انتخاب می کند . imfill چاله ها را پر می کند و مرزها را مشخص می کند هر محدوده بسته را باholesنامگذاری می کند .

قسمت چهارم : محدوده ها را پیدا می کند مناطق مرزی را دنبال می کند و تعداد آنها را نشان می دهد . با گذاشتن noholes باعث می شود پردازش سریع تر شود label2rgb تصویر را رنگی می کند.

در انتها تعداد اشکال موجود در متغیر Count  قرار می گیرد .

 

RGB = imread(‘d:\test4.jpg’);              1

figure , imshow(RGB) ,title(‘Orginal image’)

 

I = rgb2gray(RGB);                              2

threshold = graythresh(I);

bw = im2bw(I,threshold);

imshow(bw) , title(‘threshold image’)

3

bw = bwareaopen(bw,30);

se = strel(‘disk’,2);

bw = imclose(bw,se);

bw = imfill(bw,’holes’);

figure , imshow(bw) , title(‘fill image’)

[B,L] = bwboundaries(bw,’noholes’);                 4

Count=length(B)

figure , imshow(label2rgb(L)),title(‘RGB’)

 

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

1- Matlab File Exchange ( در اينجا مي‌توانيد برنامه‌ها و ToolBoxهاي متنوعي براي استفاده در Matlab پيدا کنيد.)

2- صفحه پردازش تصوير و الگوريتم هاي گرافيکي efg

3- ImageEN Component براي Delphi

4- ImageEnX يک ActiveX خوب پردازش تصوير براي محيط Visual Studio

5- براي مقدمه‌اي درباره خوشه‌بندي به اين مقاله مراجعه کنيد.

Cluster Analysis: What is it

 

 

6- لينک‌هاي تاپ  درباره شناسايي الگو(سايت Professor Godfried )

Pattern Recognition on the web

7- لينک تصاوير استاندارد و بانک‌هاي اطلاعاتي تصوير براي استفاده تحقيقاتي يا تجاري

Computer Vision Test Images

8- يک مقاله خوب درباره K-Nearest Neighborhood Decision Rule

9- يک مقاله خوب ديگر [96k-PDF]

Instance-Based Learning: kNearest Neighbour

10- مقاله آموزشي درباره Support Vector Machines

11- Nearest Neighbor Rule: A Short Tutorial

12- Self-Organizing Map (SOM) and Support Vector Machine (SVM)

13- اصول پايه‌اي پردازش تصوير (مرجع کاملي است)

Image Processing Fundamentals

14-مرجع مقالات فارسی پردازش تصویر

با تشکر از سایت mathworks.ir

 

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

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

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