نوشتن پروژه پردازش تصویر در متلب
نوشتن پروژه پردازش تصویر در متلب :سورس متلب
تشخیص چهره در متلب :
سورس متلب : برای بازشناخت یک تصویر ورودی، ابتدا از تصویر بردار ویژگی استخراج میشود(باید ویژگی استخراج شده، با روش استخراج ویژگی از تصاویر موجود در بانک ویژگی مطابقت داشته باشد). سپس بردارهای استخراجی کاهش بعد داده میشود. در کاهش بعد جداپذیری کلاسها و طبقهبندی آنها بهتر میگردد. سپس ویژگی دسته موجود دربانک ویژگی مشخص میشود. حال یکی از دستههای موجود در بانک ویژگی انتخاب شده، باید مشخص کرد که آیاتصویر ورودی متعلق به همین کلاس است(شخصی که ویژگیهای موجود دربانک متعلق به آن شخص است) یا اینکه تصویر ورودی اصلا در بانک تصاویر نبوده وکاملا جدید است. لذا یک سطح آستانه برای فاصله و متناسب با ضریب اطمینان لازم برای باشناخت تصویر جدید بکار برده شده و به این صورت عمل میگردد که اگر فاصله بردار ویژگی استخراج شده از تصویر جدید تا نزدیکترین بردار ویژگی موجود در بانک، در حد قابل قبولی بود، تصویر جدید متعلق به آن کلاس تشخیص داده میشود. و در غیر اینصورت تصویر جدید قابل شناسایی(باز شناخت) نمیباشد. اگر برای ویژگی مربوط به فردی که تصویر ورودی متعلق به وی است. در بانک باشد و باز شناخت انجام نشود. به این معنی است که ویژگیهای استخراجی از تصویر جدید، با ویژگی استخراجی از تصاویر آموزشی متفاوت است.
سورس متلببا تغیر تصویر چهره یک شخص ویژگیهای استخراجی تغییر میکند، اما اگر روش استخراجی به گونهای باشد که تغییرات در تصویر فرد، تاثیر زیادی بر بردار ویژگی مربوط به وی نداشته باشد. ویژگی استخراجی موثرتر و پایدارتر بوده و میتوان حالتهای متفاوتتری از چهره را مورد باز شناخت قرار داد.
پارامترهای مهم در تعیین نرخ بازشناخت:
نرخ باز شناخت در تمامی روشهای موجود، به چند عامل مهم وابسته است، که به آنها اشاره میشود:
الف- اندازه تصاویر چهره
هر چند تصاویر بزرگتر باشند، حاوی اطلاعات بیشتری از چهره بوده واین فراوانی اطلاعات در بردار استخراجی نیز صدق میکند، ولذا طبقهبندی و جداپذیری کلاسها بهتر انجام گرفته و نرخ بازشناخت افزایش مییابد. البته اگر تصاویر بزرگ و تعداد آنها زیاد باشد، حجم و حافظه زیادی برای پردازش و نگهداری تصاویر، لازم خواهد بود.
ب- تغییرات تصاویر آموزش هر شخص
اگر تغییرات تصاویر آموزشی در هر کلاس کم باشد، تغییرات بردار استخراجی و تداخل بین کلاسها کمتر بوده و نرخ شناسایی افزایش مییابد. اما باید توجه داشت که در این صورت، حالتهای محدودی از چهره (شبیه تصاویر آموزشی) قابل بازشناخت خواهد بود.
ج- تعداد اشخاص (کلاسها) در بانک تصاویر
با افزایش تعداد کلاسها، تداخل بین کلاسها بیشتر شده و از جداپذیری آنهاکاسته میگردد ونرخ شناسایی نسبت به تعداد کمتر کلاسها، پایین میآید.
د- بکار بردن سطح آستانه
سورس متلببا بکار بردن سطح آستانه، برای فاصله کلاسها میتوان فاصله کلاسها میتوان دقت و نرخ بازشناخت را افزایش داد و این دقت را برای هر شخص(کلاس) به مقدار دلخواهی تعیین کرد، اما باید توجه کرد که با افزایش دقت در بازشناخت، تنوع چهره در بازشناخت کاهش مییابد.
شبیه سازی:
در این شبیه سازی چندین قسمت مورد توجه قرار می گیرد:
- استفاده از فیلتر gabor برای تشخیص و استخراج ویژگی های تصویر که این قسمت توسط کد زیر انجام می گیرد:
- if ~exist(‘gabor.mat’,’file’)
- fprintf (‘Creating Gabor Filters …’);
- create_gabor;
- end
- if exist(‘net.mat’,’file’)
- load net;
- else
- createffnn
- end
- if exist(‘imgdb.mat’,’file’)
- load imgdb;
- else
- IMGDB = loadimages;
- end
و مابقی قسمت های برنامه بصورت زیر کد می گردد:
while (1==1)
choice=menu(‘neural network’,…
‘loadimages’,…
‘ createffnn’,…
‘trainnet’,…
‘run program’,…
‘clear all’ ,…
‘close’)
if (choice ==1)
IMGDB = loadimages;
end
if (choice == 2)
createffnn
end
if (choice == 3)
net = trainnet(net,IMGDB);
end
if (choice == 4)
[file_name file_path] = uigetfile (‘*.jpg’);
if file_path ~= 0
im = imread ([file_path,file_name]);
try
im = rgb2gray(im);
end
tic
im_out = imscan (net,im);
toc
figure;imshow(im_out);
figure;
imcrop([7.5 21.5 18 28]);
imcrop([26.5 13.5 15 27]);
imcrop([47.5 24.5 18 27]);
imcrop([64.5 12.5 17 26]);
imcrop([82.5 23.5 18 28]);
imcrop([98.5 7.5 17 28]);
imcrop([119.5 21.5 18 27]);
end
end
if (choice == 5)
clear all;
clc;
close all;
return;
end
end
سورس متلبکه برنامه حاصل از اجرای برنامه فوق بصورت زیر در می آید:
که این منو پس از اجرای کد اصلی به نمایش داده می شود:
مرحله اول:
- فراخواندن تصاویر به محیط متلب که شامل تصاویر صورت و بدن می باشد.
که این بعنوان دیتابیس اصلی برنامه می باشد: که با اجرای آن دیتابیس تشکیل می گردد.
- تشکیل شبکه عصبی شامل لایه های مخفی ،میانی و ورودی های سیستم
numInputs: 1
numLayers: 2
numOutputs: 1
numInputDelays: 0
numLayerDelays: 0
numFeedbackDelays: 0
numWeightElements: 216201
sampleTime: 1
- آموزش شبکه عصبی با استفاده از تعداد لایه های ورودی ،میانی و خروجیسورس متلب که در این قسمت ویژگی های استخراجی از فیلتر gabor به شبکه آموزش داده شده تا بتوان از شبکه بعنوان یه تشخیص دهنده صورت استفاده کرد:
که شبکه فوق را بصورت زیر می توانید مشاهده کنید:
که در شکل فوق تعد اد نرون های هر قسمت را می توانید مشاهده نمایید و تعداد تکرار ۴۰۰ عملکرد،گرادیان شبکه و بقیه پارامترها را می توانید مشاهده نمایید:
در این مرحله آموزش شبکه عصبی تمام شده است و نوبت نوبت به تست شبکه می رسد با اجرای گزینه run program پنجره ای باز می شود که با انتخاب عکس مورد نظر تست برنامه بر روی تصویر شروع می گردد که اجرای برنامه بصورت زیر در می آید:
که نشان دهنده عملیات شبکه عصبی برو روی تصویر و تشخیص چهره می باشد که با چک کردن تمامی نقاط تصویر شکل زیر نشان داده می شود:
و نهایتا شکل زیر حاصل می گردد:
فیلتر gabor استفاده شده از امفایل gabor.m استفاده می شود:
که از دستور
Psi = gabor (w,nu,mu,Kmax,f,sig)
برنامه را با عکس سیاه و سفید دیگری نیز تست می کنیم که نتایج خروجی بصورت زیر در می آید:
برای خرید سورس پروژه روی لینک زیر کلیک نمایید:
[ulp id=’hAvlTccXXzt2ufny’]