رفتن به مطلب

پیاده سازی مقاله در مورد تشخیص اعداد با هیستوگرام و شبکه عصبی


ارسال های توصیه شده

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

یک سری توضیحات درباره کد ها می گذارم

همانطور که تمام دوستان در جریان هستند تمام کلاس بندی ها ( موضوعاتی که در بخش کلاس بندی جایی می گیرند) برای متمایز کردن از بقیه کلاس ها نیاز به یک سری ویژگی دارند.

هر الگوریتم دسته بندی(همانند شبکه عصبی , svm) شامل دو قسمت می باشند یک داده های آموزشی و داده های تست. در داده های آموزشی ما کلاس داده را نیز مشخص می کنیم. نکته ای باید به آن توجه کنید آن است که داده های آموزشی همان بردار ویژگی های مربوز به هر رقم می باشد.

حال نوبت به توضیح کد ها می رسه

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

dataTrain برای نگه داری بردار وپژگی ها و TargetTrain برای نگه داری کلاس داده ها بکار می رود.

 

حلقه اول for counter=1:10 برای پیماش رقم ها استفاده می گردد(0 تا 9) حلقه دوم برای خواندن تصاویر هر نمونه از رقم استفاده می شود. همانظور که مشخص است ما برای هر رقم 150 تصویر در نظر گرفته ایم.

برای ساخت بردار ویژگی برای هر رقم ابتدا باید تصویر ورودی را به تصویر با ساختار LBP ببریم که توضیحات آن در بالا مندرج گردیده است و بعد از این که ما تصویر را با استفاده از ساختار LBP ساختم نوبت به استخراج ویژگی می رسد.

برای استخراج ویژگی در این مقاله از Histogtram Ptrojection در راستای عمودی و افقی استفاده گردیده است. برای اینکه ویژگی ها متمایز گردن تصوی را به چهار قسمت تقسیم کرده ایم بعد عملیات Projection را روی آن انجام داده ایم.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

کد های بالا تبدیل تصویر با استفاده از ساختار LBP را انجام می دهد و کد های زیر عملیات Projection روی چهار قسمت تصویر به کار می برد.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

سلام.

امکانش هست که تنها برای یک تصویر این استخراج ویژگی رو انجام بدیم؟

من شنیدم که lbp فقط مربوط به یک دسته تصویر هست.

 

 

اگر بخوام برای یه تصویر ویژگی lbp اون رو استخراج کنیم، منتها به این صورت باشه که این ماسکی که حولش هست ویژگی هایی رو که استخراج میکنه با ازای تمام عناصر و تصویر صفحه باشه.

 

مثلا برای یه تصویر 225*225 ااگر 80 ویژگی از lbp بدست میاریم ویژگی های مستخرج این تعداد بشن:

 

50625*80=

یعنی :225*225*80

 

باید به چه صورت این ویژگی استخراج بشه؟

 

چون الان مثلا من اومدم ویژگیای استاتیک یا glcm رو بدست آوردم برای یه تصویر.

بعد میخوام این lbp ها رو هم کنار همون ها قرار بدم.طبیعتا ابعاد اونام با ابعاد تصویرمون برابره دیگه.

 

مثلا استاتیک 6*50625 هست، glcm 44* 50625 هست .

اونوقت باید این lbp هم برای اینکه کنار اونیکی ها قرار بگیره یه همچین حالتی داشته باشه دیگه.

 

یعنی اصطلاحا میخوام ویژگیها رو بر اساس پیکسلای تصویر(تک پیکسل تصویر) بدست بیارم و که در کنار ویژگی های قبلی قرار بگیره و هم بعد با اونا باشه.

چطور میشه این رو نوشت؟

لینک به دیدگاه

سلام

این که میگی را میشه اجرا کرد ولی دیگر 80 در اندازه تصویر نمیشه بلکه برابر خود تصویر میشه یعنی برای هر پیکسل یه عدد باینری تولید می کنیم و این عدد باینری می توانید به عنوان یه ویژگی استفاده کنید برای این کار هم کافی است برای هر تصویر این قسمت از کد را اجرا کنید

البته باید توجه کنید که در این حالت باید در اطراف ماتریس تصویر صفر ایجاد کنید. یعنی یه لایه صفر اطراف تصویر قرار می گیرد و در آخر ماتریس result رو به بردار تبدیل کنید البته توجه کنید چون اطراف تصویر صفر قرار داده اید تصویر شما از سطر 2 تا h-1 و از ستون 2 تا w-1 می باشد

 

for i=2:h-1

for j=2:w-1

im=main(i-1:i+1,j-1:j+1);

for ii=1:3

for jj=1:3

if(~(ii==2 && jj==2))

if(im(ii,jj)-im(2,2)>0)

im(ii,jj)=1;

else

im(ii,jj)=0;

end

end

end

end

num=[num2str(im(2,1)) num2str(im(3,1)) num2str(im(3,2)) num2str(im(3,3)) num2str(im(2,3)) num2str(im(1,3)) num2str(im(1,2)) num2str(im(1,1))];

Resault(i-1,j-1)=bin2dec(num);

end

end

لینک به دیدگاه
سلام

این که میگی را میشه اجرا کرد ولی دیگر 80 در اندازه تصویر نمیشه بلکه برابر خود تصویر میشه یعنی برای هر پیکسل یه عدد باینری تولید می کنیم و این عدد باینری می توانید به عنوان یه ویژگی استفاده کنید برای این کار هم کافی است برای هر تصویر این قسمت از کد را اجرا کنید

البته باید توجه کنید که در این حالت باید در اطراف ماتریس تصویر صفر ایجاد کنید. یعنی یه لایه صفر اطراف تصویر قرار می گیرد و در آخر ماتریس result رو به بردار تبدیل کنید البته توجه کنید چون اطراف تصویر صفر قرار داده اید تصویر شما از سطر 2 تا h-1 و از ستون 2 تا w-1 می باشد

 

for i=2:h-1

for j=2:w-1

im=main(i-1:i+1,j-1:j+1);

for ii=1:3

for jj=1:3

if(~(ii==2 && jj==2))

if(im(ii,jj)-im(2,2)>0)

im(ii,jj)=1;

else

im(ii,jj)=0;

end

end

end

end

num=[num2str(im(2,1)) num2str(im(3,1)) num2str(im(3,2)) num2str(im(3,3)) num2str(im(2,3)) num2str(im(1,3)) num2str(im(1,2)) num2str(im(1,1))];

Resault(i-1,j-1)=bin2dec(num);

end

end

 

سلام.

 

ممنونم.

 

منظورت به اینصورته:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

....................................................................

 

clear;

clc;

 

 

Img1=imread('roimdb001.tif');

 

 

Feature_LBP1=[];

Resault=[];

[h w]=size(Img1)

Img=padarray(Img1,[1 1]);

 

 

 

for i=2:h-1

for j=2:w-1

im=Img(i-1:i+1,j-1:j+1);

for ii=1:3

for jj=1:3

if(~(ii==2 && jj==2))

if(im(ii,jj)-im(2,2)>0)

im(ii,jj)=1;

else

im(ii,jj)=0;

end

end

end

end

num=[num2str(im(2,1)) num2str(im(3,1)) num2str(im(3,2)) num2str(im(3,3)) num2str(im(2,3)) num2str(im(1,3)) num2str(im(1,2)) num2str(im(1,1))];

Resault(i-1,j-1)=bin2dec(num);

end

end

 

 

Feature_LBP=[Feature_LBP;Resault];

 

عدد باینری؟!

دسیمالش کردی آخرش دیگه.

......................................

 

مزیت این کار دقیقا چیه؟

اصلا منظور از lbp چیه؟

چرا ازش استفاده میکنیم؟

میتونید یه کم توضیح بدید؟

 

برای تصویری مثل مامو که کنتراستش پایین هست به این ترتیب ویژگی که استخراج میشه مطلوبه؟

 

چرا اینجا از هیستوگرام پروجکشن استفاده کرده بود؟

 

یه کم توضیح میده لطفا؟

 

من یه تعداد تصویر دارم اما برای هر کدوم میخوام جداگانه این lbp رو بدست بیارم که نمیدونم مطلوبم هست یا نه اما شما برای 150 تا تصویر این کار رو انجام دادید.

چرا برای 150 تا تصویر همزمان lbp رو بدست میاری بعد پروجکشن؟

لینک به دیدگاه

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

 

من الان با zeropadding اطراف تصویر رو لایه گذاری کردم(با صفر).

حالا تصویری که 337*337 بود تبدیل به 339*339 شده.

اما بردار نتیجه ی

Feature_LBP الان 335*335 هست ابعادش.

 

این الان با سایز تصویر برابر نیست.

چون بردار خروجی من دقیقا مساووی با تعداد پیکسل هام هست، مثلا برای این تصویر که 337*337 هست من 113569 عدد پیکسل دارم.

اما الان خروجی این بردار Feature_LBP 335*335=112225 هست.این اختلاف به چه صورت حل میشه؟

 

و اینکه آیا صحیحه که چون در واقع یه ویژگی هستن برای کل تصویر به اینصورت بنویسمش و در یک ستون:

 

kk=reshape(Feature_LBP,112225,1);

 

اگر دوستان محبت کنن پاسخ بدن ممنون میشم.

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

 

من الان با zeropadding اطراف تصویر رو لایه گذاری کردم(با صفر).

حالا تصویری که 337*337 بود تبدیل به 339*339 شده.

اما بردار نتیجه ی

Feature_LBP الان 335*335 هست ابعادش.

 

این الان با سایز تصویر برابر نیست.

چون بردار خروجی من دقیقا مساووی با تعداد پیکسل هام هست، مثلا برای این تصویر که 337*337 هست من 113569 عدد پیکسل دارم.

اما الان خروجی این بردار Feature_LBP 335*335=112225 هست.این اختلاف به چه صورت حل میشه؟

 

و اینکه آیا صحیحه که چون در واقع یه ویژگی هستن برای کل تصویر به اینصورت بنویسمش و در یک ستون:

 

kk=reshape(Feature_LBP,112225,1);

 

اگر دوستان محبت کنن پاسخ بدن ممنون میشم.

 

عدد باینری؟!

آره دیسیمالش کردیم

مزیت این کار دقیقا چیه؟

مزیت این کار تا جایی که می دونم این است که پیکس هایی که بهم نزدیک هستند از یک الگوی دیسمال پیروری می کنن که نمود این کار در هیستوگرام آن مشخص می شود...

اصلا منظور از lbp چیه؟

منظور این است که از یک الگور محلی باینری استفاده کرده تا این نتایج در گام خای بعدی که استخراج ویژگی است کاربرد داشته باشد........

برای تصویری مثل مامو که کنتراستش پایین هست به این ترتیب ویژگی که استخراج میشه مطلوبه؟

باید اجرا کنی ببینی آیا برای این تصاویر هم خوب هست یا نه البته بنظرم مفید واقع بشه

چرا اینجا از هیستوگرام پروجکشن استفاده کرده بود؟

برای استخراج ویژگی از هیستوگرام استفاده کرده ایم

من یه تعداد تصویر دارم اما برای هر کدوم میخوام جداگانه این lbp رو بدست بیارم که نمیدونم مطلوبم هست یا نه اما شما برای 150 تا تصویر این کار رو انجام دادید.

چرا برای 150 تا تصویر همزمان lbp رو بدست میاری بعد پروجکشن؟

شما اشتباه متوجه شدید ، من برای هر تصویر جدا محاسبه می کنم یعنی برای هر تصویر lbp را بصورت جدا محاسبه کردم اگر دقت کنی متوجه می شوی....

 

برای سوال آخرت هم اگر به صورت زیر بنویسی درست میشه

[h w]=size(Img);

لینک به دیدگاه
  • 6 ماه بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...