دانلود سورس مدل مخفی مارکوف برای تشخیص لب در چهره افراد مختلف
دانلود پیاده سازی مقاله مدل مخفی مارکوف برای تشخیص لب در چهره افراد مختلف در محیط متلب
در این کار روش تشخیص لب در چهره افراد مختلف نشان داده شده است.
این مقاله ISI را می توانید از لینک زید دانلود و مشاهده نمایید.
مجله: Image and Vision Computing 32 (2014) 1080–۱۰۸۹
Using a Discrete Hidden Markov Model Kernel for lip-based biometric identification
Abstract
In this paper, a novel and effective lip-based biometric identification approach with the Discrete Hidden Markov Model Kernel (DHMMK) is developed. Lips are described by shape features (both geometrical and sequential) on two different grid layouts: rectangular and polar. These features are then specifically modeled by a DHMMK, and learnt by a support vector machine classifier. Our experiments are carried out in a ten-fold cross validation fashion on three different datasets, GPDS-ULPGC Face Dataset, PIE Face Dataset and RaFD Face Dataset. Results show that our approach has achieved an average classification accuracy of 99.8%, 97.13%, and 98.10%, using only two training images per class, on these three datasets, respectively. Our comparative studies further show that the DHMMK achieved a 53% improvement against the baseline HMM approach. The comparative ROC curves also confirm the efficacy of the proposed lip contour based biometrics learned by DHMMK. We also show that the performance of linear and RBF SVM is comparable under the frame work of DHMMK.
Keywords
برای این کار ابتدا کانتور لب فرد استخراج می شود و سپس با استفاده از روش مدل مخفی مارکوف HMM و SVM شماره ID فرد تعیین می شود.
در این جا برای استخراج کانتور لب از روش زیر استفاده شده:
- ابتدا چهره فرد تشخثص داده می شود.
- قسمت پایینی چهره که شامل لب و دهان است تعیین می شود.
- قسمت تفکیک شده دهان با فرمول خاصی که در آن رنگ قرمز روشن تر از بخش های دیگر می شود به سیاه و سفید تبدیل می شود.
- از روی تصویر سیاه و سفید کانتور (خط دور لب) تشخیص داده می شود.
کد funcmain1.m:
این کد یک عکس را به عنوان ورودی می گیرد.
در خط ۲ عکس را به double تبدیل میکند.
در خط ۳، چهره را تشخیص داده و در faceDetector قرار می دهد.
در خط ۴ مستطیلی را که شامل چهر است بدست می آورد.
در خط ۵ مستطیل را روی چهره ست میکند.
در خط ۶ نتیجه تشخیص چهره را نشان می دهد.
در خط ۱۰ قسمت پایینی چهره را جدا کرده و در B قرار می دهد و در خطوط ۱۱ و ۱۲ آن را نمایش می دهد.
در خط ۱۴ با تابع rgb2gray2 (این تابع همان rgb2gray خود متلب است با این تفاوت که در ۴۴ ضرایب به ۱ و -۲٫۴ و ۱ تغییر کرده، طبق فرمول ۱ مقاله و باعث می شود رنگ قرمز لب از سایر نقاط روشن تر باشد.) عکس B را سیاه و سفید می کند.
و در خطوط ۱۵ و ۱۶ آن را نمایش میدهد.
در خط ۲۱ از روی عکس BB در مرحله قبل، با دستور Bwmorph متلب کانتور لب را تشخیص می دهد و در خطوط ۲۲ و ۲۳ آن را نمایش میدهد.
در خطوط ۲۶و ۲۷ a و b طول و عرض ماتریس bw هستند.
در خطوط ۳۰ تا ۴۰ از روی x و y نقاط ۱ در ماتریس bw یعنی نقاط سفید در تصویر، طول و عرض لب محاسبه می شود.
در خطوط ۴۲ تا ۴۵ از روی طول و عرض بالا، top, low و left , right لب محاسبه می شود.
در خطوط ۴۸ تا ۵۰ از روی مرکز لب بدست می آید.
در خطوط ۵۵ تا ۶۲ مختصات x نقاط سفید دور لب در بردار vect طبق شکل ۴ قسمت a مقاله قرار میگیرد.
در خطوط ۶۶ تا ۷۳ مختصات y نقاط سفید دور لب در بردار vect طبق شکل ۴ قسمت a مقاله قرار میگیرد.
در خطوط ۷۷ تا ۸۶ زاویه های نقاط دور لب طبق شکل ۴ مقاله بخش b محاسبه شده و در plar قرار می گیرد.
در خطوط ۸۹ تا ۹۴ روی نقاط Grid یعنی نقاط در vect الگوریتم k_means را اجرا می کنیم تا تعداد ۱۰ نقطه را از بین نقاط انتخاب کنیم. که در c1 ریخته می شود.
در خطوط ۹۵ تا ۱۰۰ روی نقاط Polar یعنی نقاط در polar الگوریتم k_means را اجرا می کنیم تا تعداد ۱۰ نقطه را از بین نقاط انتخاب کنیم. که در c2 ریخته می شود.
تابع funcmain1.m در آخر دو بردار از نقاط c1 , c2 را در خروجی برمیگرداند.
تابع funcmain.m:
این تابع دقیقا همان تابع funcmain1.m است. برای اینکه عکس های تشخیص چهره و بعد دهان و درنهایت کانتور لب را برای همه عکس ها نمایش ندهیم از این تابع دو تا نوشتیم، در funcmain.m نقاط مربوط به نمایش عکس ها را حذف کردیم.
فقط برای یک عکس funcmain1.m را اجرا میکنیم و برای بقیه funcmain را .
کد run:
در خط ۴ پکیج HMMall را که مربوط به تشخیص چهره است add میکند. شما باید در این خط آدرس آن را در سیستم خودتان بگذارید.
در خطوط ۶ تا ۱۰ ۵ عکس را میخواند و در I1 تا I5 قرار می دهد.
در خطوط ۱۳ تا ۱۵ Grid , Polar , Svm_data را با مقادیر اولیه صفر تعریف می کند.
در خطوط ۱۸ تا ۲۱ تابع funcmain.m را برای عکس I1 صدا می زند و c1 را در Grid قرار داده، و C2 را در Polar و c1 , c2 را در
Svm_data قرار میدهد. نیمه اول Svm_data برای Grid و نیمه دوم برای Polar است.
در خطوط ۱۸ تا ۵۰ رای ۴ عکس دیگر همان کار قبل برای عکس I1 را انجام میدهد، با این تفاوت که برای این ها funcmain1.m را صدا میزند تا خروجی ها را دیگر نشان ندهد.
از خط ۵۴ تا ۱۶۰ مربوط به مدل مخفی مارکوف HMMall است.
در خطوط ۵۷ و ۵۸ متغیرهای O , Q تعریف میشوند.
در خطوط ۶۱ تا ۶۴ مقداردهی اولیه انجام می شود.
خط ۶۹ تابع dhmm_em تابع learn یا یادگیری در HMMall است بر اساس مجموعه Grid که در بالا محاسبه شد است.
در خطوط ۷۰ تا ۷۶، متغیرهای صفر در ماتریس۱ B_hat را به عدد کوچک غیر صفری تبدیل میکند.
خط ۷۷ تابع dhmm_em تابع learn یا یادگیری در HMMall است بر اساس مجموعه Grid که در بالا محاسبه شد است.
در خطوط ۷۸ تا ۸۰، متغیرهای صفر در ماتریس B_hat2 را به عدد کوچک غیر صفری تبدیل میکند.
خط ۹۱ تا ۱۶۱ دقیقا مشابه خط ۶ تا ۸۸ در بالا است، تنها ۵ عکس در خطوط ۹۳ تا ۹۷ تغییر کرده اند.
تا اینجا مدل HMMall را با ۴ حالت مختلف learn کردیم:
دو حالت برای ۵ عکس اول، یکی روی مختصات Grid این نقاط و دیگری روی مختصات Polar نقاط کانتور لب این ۵ عکس.
دو حالت دیگر هم برای ۵ عکس دوم مشابه ۵ عکس اول روی Grid و Polar آن ها.
از خط ۱۶۹ تست روی مدل های HMMall و Svm است.
در خطوط ۱۷۱ تا ۱۷۶ تعداد ۶ عکس را برای تست خوانده ایم.
خط ۱۶۸ نشان میدهد که ۳ عکس اول از این ۶ تا جزء ۵ عکس اول هستند، یعنی کلاس ۱ و ۳ عکس دوم از این ۶ عکس تست جزء ۵ عکس دوم هستند.
حالا ما میخواهیم ببینیم دو مدل HMMall و Svm چند درصد درست تشخیص می دهند که هر عکس برای کدام دسته است. ۵ عکس اول یا دوم؟
در خطوط ۱۸۰ تا ۱۸۵ یکی یکی عکس ها را به تابع test می دهیم.
تابع test:
این تابع در ورودی عکس I_test را میگیرد و class یا دسته ای که عکس به آن متعلق هست را نیز میگیرد و همین طور
مقادیر زیر را میگیرد:
prior_hat1,prior_hat2,prior_hat3,prior_hat4,A_hat1,A_hat2,A_hat3,A_hat4,B_hat1,B_hat2,B_hat3,B_hat4
این مقادیر همه خروجی های dhmm_em است که در بالا ۴ بار صدا زده شد، ۲ بار برای ۵ عکس اول و ۲ بار برای ۵ عکس دوم.
در خط ۳ این تابع عکس I_tets به تابع funcmain.m داده می شود تا در این تابع کانتور لب این عکس تشخیص داده شود و مجموعه های Grid , Polar آن محاسبه شده و در C1_test , C2_test قرار میگیرد.
به طور مثال در خط ۵ احتمال بودن عکس در مجموعه ۵ عکس اول ، یعنی کلاس ۱ با توجه به مختصات Grid آن هاست و خط ۶ مروبط به مختصات Polar آن ها.
سپس در خط ۱۰ ماکزیمم loglik محاسبه می شود و اندیس آن در index قرار میگرید. یعنی متغیر index نشان میدهد که این عکس بیشترین احتمال را در کدام دسته دارد، ۱ یا ۲.
در خطوط ۱۱ تا ۱۳ چک می شود که شماره کلاس بدست آمده با class ی که در ورودی داده شده برابر است یا نه، اگر برابر بود متغیر r یکی شده و برگردانده می شود. یعنی اگر ۱ شد، دسته مربوط به عکس درست تشخیص داده شده.
ادامه کد run.m:
در خطوط ۱۸۸ و ۱۸۹ تعداد داریه های صفر در مجموعه result برگردانده می شود که نشان دهنده این است که از بین ۶ عکس تست، چند تا عکس غلط تشخیص داده شده است.
و در خطوط۱۹۴ تا ۱۹۶ نتیجه به صورت درصد روی نمودار نمایش داده میشود.
از خطوط ۲۰۰ به بعد دسته بندی بر اساس svm است.
در خط ۲۰۴ group تعریف شده. ۱۰ درایه اول آن که ۱ است مربوط به ۵ عکس اول است که در دسته ۱ هستند (۵ تا ۱ اول برای Grid و ۵ تای دوم برای Polar).
۱۰ تا عدد ۲ دم در group هم برای ۵ عکس دوم است.
در خط ۲۰۱ svm_data که در بالا ساخته شد به همراه Group به svmtrain داده می شود . SvmStruct ساخته می شود.
در خطوط ۲۰۷ تا ۲۱۲ عکس های test به تابع funcmain داده می شوند تا از روی آن ها مقادیر Grid , Polar بدست آیند.
در خطوط ۲۱۶ تا ۲۲۶ تابع svmclasify برای هر عکس صدا زده می شود و شماره کلاسی که svm تشخیص می دهد در species قرار می گیرد.
در خطوط ۲۲۹ تا ۲۳۴ تعداد تشخیص غلط بر اساس Grid محاسبه می شود.
در خطوط ۲۳۷ تا ۲۵۵ نیز همان روند بالا حال بر اساس polar انجام می شود.
در خطوط ۲۷۵ تا ۲۶۳ نیزنتیجه تشخیص به صورت درصد نمایش داده می شود.
مشخصات فایل
محتوی دانلود: مقاله + سورس های متلب + گزارش در word
شما می توانید این مجموعه را با پرداخت ۳۷۰۰۰ تومان از سایت دنیا فایل دریافت نمایید.
مطالب مرتبط
فرستادن دیدگاه
نوشتههای تازه
- دانلود پیاده سازی رمزنگاری اثر انگشت
- دانلود پیاده سازی مقاله رمزنگاری چندگانه تصویر بر اساس جایگشت عناصر تصویر در متلب
- دانلود ترجمه مقاله رمزنگاری تصویر رنگی مبتنی بر سیستم فوق آشوب
- دانلود پیاده سازی مقاله رمزنگاری تصویر مبتنی بر دنباله های DNA و چندین نگاشت آشوب یک بعدی بهبود یافته در متلب
- رمزنگاری تصویر رنگی مبتنی بر ترکیب سیستم آشوب و دنباله های DNA
- دانلود ترجمه مقاله الگوریتم رمزنگاری تصویر مبتنی بر آشوب با استفاده از عملیات دنباله DNA
- دانلود ترجمه مقاله یک روش جدید رمزنگاری تصویر مبتنی بر اغتشاش و انتشار با استفاده از اتوماتای سلولی و دنباله DNA
- پیاده سازی مقاله رمزنگاری تصویر رنگی مبتنی بر سیستم های فوق آشوب و اتوماتی سلولی
- پیاده سازی مقاله رمزنگاری تصویر مبتنی بر دنباله های DNA و توابع آشوب
- دانلود سورس پیاده سازی مقاله رمزنگاری تصویر رنگی مبتنی بر عملگر های DNA و سیستم فوق آشوب