سلام مهندس
استادم چندتافایل فرستاده واستون میزارم یه نگاهی بندازین
سلام مهندس
استادم چندتافایل فرستاده واستون میزارم یه نگاهی بندازین
آخرین ویرایش به وسیله sama.66 : جمعه 22 اسفند 1393 در 16:12 عصر
مهندس میشه راهنماییم کنید؟
آخرین ویرایش به وسیله sama.66 : شنبه 12 مهر 1393 در 15:49 عصر
سلام
این هم مثل همون قبلی ها تفاوت چندانی نداره الان مشکل کجاست؟
rastesh yekami vasam mobhame, chetor azashun estefade konam
شما شروع کنید هر جا اشکال داشتید بگید تا برطرف کنیم
alan in zernik be surate functione khob tasav
iro chetor bedam k bekhune
فایل 5 را باز کنید دستورالعمل را در خط اول می بینید
function [A_nm,zmlist,cidx,V_nm] = zerniketest(img,n,m)
اولین پارامتر تابع یک تصویر هست و دومی هم که n هست. کافیه همین دو تا وارد بشه
تصویر ها هم که قبلا گفته بودم چه طور بخونید
khob n ro be in shekl neveshtam n=12
tasaviram k hamun cod ro neveshtam k bekhune vali in error ro mide
Error: File: Untitled10.m Line: 19 Column: 1
Function definitions are not permitted in this context.
ok.........................
آخرین ویرایش به وسیله sama.66 : جمعه 22 اسفند 1393 در 16:14 عصر
نه این جور که نمیشه. احتمالا شما هم فرصت یاد گرفتن متلب را نداشته باشید
یک سوال : اون برنامه قبلی که با local zernike moment بود را به درد نخورد؟ جوابها هم که خیلی خوب بود
oun khub bud vali ostad goftan bayad zarayebesho be in shekl be dast biyarim k ba code matlab bashe
اون روش که استفاده کردیم با این روش که الان استاد شما گفته کمی متفاوته و چون حجم محاسبات در اون روش زیاد بود با متلب زمان زیادی می گرفت که کد ++c استفاده شد و فکر کنم جوابش هم بهتر باشه
فقط چند تا سوال دیگه: از استادتون بپرسید 1. آیا لازمه تصاویر قبل از ورود به زرنیک، به باینری ( سیاه و سفید) تبدیل بشن؟
2. آیا ضرایب زرنیک که به صورت مختلط هست قسمت حقیقی اون باید استفاده بشه یا قسمت موهومی؟
ok ta chan daghighe dg behetun etela midam
باینری باید باشه بعد گفتن می تونین abs بگیرین که اندازه بشه،دستور absمقدار اندازه ردپو حساب میکنه
دو تا برنامه هست ابتدا در هر کدام از فولدر های پلاک و غیر پلاک وارد شوید و برنامه اول را برای هر کدام اجرا کنید. دو تا فایل به نام data.csv ایجاد میشه که اونها را به pelak.csv و nonpelak.csv تغییر نام بدید و هر دو را در یک فولدر دیگه بذارید و برنامه دوم را اجرا کنید
zdata=[];
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
c=imread(file);
level=graythresh(c);
bwim=im2bw(c,level).*255;
tool=size(bwim,2);
arz=size(bwim,1);
m1=bwim(:,1:round(tool*3/7));
m2=bwim(:,round(tool*2/7)+1:round(tool*5/7));
m3=bwim(:,round(tool*4/7)+1:tool);
zimg=abs(zerniketest(bwim,12));
z1=abs(zerniketest(m1,12));
z2=abs(zerniketest(m2,12));
z3=abs(zerniketest(m3,12));
zdata = [zdata;[zimg z1 z2 z3]];
end
dlmwrite ( 'data.csv' , zdata);
pelakdata= dlmread( 'pelak.csv');
nonpelakdata= dlmread('nonpelak.csv');
xdataamoozesh=[pelakdata(1:440,:);nonpelakdata(1:800,:)];
xdataazmayesh=[pelakdata(441:end,:);nonpelakdata(801:end,:)];
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
miangin=mean(xdataamoozesh);
enherafmeyar=std(xdataamoozesh);
xdataamoozesh=bsxfun(@rdivide,bsxfun(@minus ,xdataamoozesh,miangin),enherafmeyar);
xdataazmayesh=bsxfun(@rdivide,bsxfun(@minus ,xdataazmayesh,miangin),enherafmeyar);
svmStruct = svmtrain2(groupamoozesh, xdataamoozesh);
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);
ممنونم،این کد میاد فقط یه بارازتصویرخام زرنیک میگیره بعدش هم ازمربع های همپوشان،
وقتی از این کداولی استفاده میکنم فایلی که استادم داده رو هم توی همون فولدرقرار بدم؟
آخرین ویرایش به وسیله sama.66 : جمعه 22 اسفند 1393 در 16:17 عصر
1. معلوم نیست باید بررسی بشه
2. فکر نکنم جواب بهتری بده. باید بررسی بشه
3. ما که همین کار را کردیم و تست و ترین را دادیم به کلاسیفایر( فقط استادتون کدها را یه کم دیر ارائه کردند چون خودمون کدها را قبلا پیدا کرده و یا نوشته بودیم )
برای svm از libsvm استفاده کردیم که در اون مقاله هم از همین استفاده شده بود
از دستورات خود متلب هم جهت ایجاد roc استفاده کردیم
این کدی که شما لطف کردید فقط از تصویر خام هستش ,برای این مرحله میخوام برای lbpهم زرنیک بگیرم ( اول lbp بگیرم بعد ضرایب زرنیک رو از روی lbp حساب کنم )
کد lbp سریع:
http://www.sharefile.ir/uploads/1412633663.zip
در کدهای زیر کد اول تصویر lbp را به باینری تبدیل نمی کنه
اما دومی ابتدا تبدیل به باینری می کنه و بعد زرنیک می گیره
map1=getmapping(8,'u2');
zdata=[];
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
c=imread(file);
bwim=lbp(c,1,8,map1,'i');
tool=size(bwim,2);
arz=size(bwim,1);
m1=bwim(:,1:round(tool*3/7));
m2=bwim(:,round(tool*2/7)+1:round(tool*5/7));
m3=bwim(:,round(tool*4/7)+1:tool);
zimg=abs(zerniketest(bwim,12));
z1=abs(zerniketest(m1,12));
z2=abs(zerniketest(m2,12));
z3=abs(zerniketest(m3,12));
zdata = [zdata;[zimg z1 z2 z3]];
end
dlmwrite ( 'data.csv' , zdata);
map1=getmapping(8,'u2');
zdata=[];
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
c=imread(file);
ILBP=lbp(c,1,8,map1,'i');
level=graythresh(ILBP);
bwim=im2bw(ILBP,level).*255;
tool=size(bwim,2);
arz=size(bwim,1);
m1=bwim(:,1:round(tool*3/7));
m2=bwim(:,round(tool*2/7)+1:round(tool*5/7));
m3=bwim(:,round(tool*4/7)+1:tool);
zimg=abs(zerniketest(bwim,12));
z1=abs(zerniketest(m1,12));
z2=abs(zerniketest(m2,12));
z3=abs(zerniketest(m3,12));
zdata = [zdata;[zimg z1 z2 z3]];
end
dlmwrite ( 'data.csv' , zdata);
1.واسه این کدو کدهای قبلی نیازهست که فایل zerniktestداخل همون فولدرباشه؟؟؟
2.دوباره مثل قبلی برای اینکه بدم به svm ازاین کداستفاده کنم؟
akdata= dlmread( 'pelak.csv');nonpelakdata= dlmread('nonpelak.csv');
xdataamoozesh=[pelakdata(1:440,:);nonpelakdata(1:800,:)];
xdataazmayesh=[pelakdata(441:end,:);nonpelakdata(801:end,:)];
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
miangin=mean(xdataamoozesh);
enherafmeyar=std(xdataamoozesh);
xdataamoozesh=bsxfun(@rdivide,bsxfun(@minus ,xdataamoozesh,miangin),enherafmeyar);
xdataazmayesh=bsxfun(@rdivide,bsxfun(@minus ,xdataazmayesh,miangin),enherafmeyar);
svmStruct = svmtrain2(groupamoozesh, xdataamoozesh);
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);
بله مثل همون قبلیه و zerniktest هم همون جا باشه
مرسی یه راهنمایی دیگه بکنید لطفا که چجوری به جای 3مربع به مربع های بیشترتبدیل کنم
zdata=[];
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
c=imread(file);
level=graythresh(c);
bwim=im2bw(c,level).*255;
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
n_zernik = 12;
zimg = abs(zerniketest( bwim,n_zernik));
moraba_koochek = tedade_moraba*2 + 1;
for m = (0:2:( moraba_koochek -3))
zimg=[zimg abs(zerniketest(bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)) ,n_zernik))];
end
zdata = [zdata; zimg];
end
dlmwrite ( 'data.csv' , zdata);
مهندس برای lbp هم کدش به به این صورت میشه؟
map1=getmapping(8,'u2');
zdata=[];
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
c=imread(file);
ILBP=lbp(c,1,8,map1,'i');
level=graythresh(ILBP);
bwim=im2bw(ILBP,level).*255;
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
n_zernik = 12;
zimg = abs(zerniketest( bwim,n_zernik));
moraba_koochek = tedade_moraba*2 + 1;
for m = (0:2:( moraba_koochek -3))
zimg=[zimg abs(zerniketest(bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)) ,n_zernik))];
end
zdata = [zdata; zimg];
end
dlmwrite ( 'data.csv' , zdata);
تکه تکه کردن lbp به صورت همپوشان کار درستی نیست. علتش عم اینه که تصویر lbp بعضی وقتها از تکرار چند تصویر اصلی در کنار هم ایجاد میشه و همپوشان کردن اون صحیح نیست
خب ما که یه بار به 3 قسمت تقسیم کردیم (3تاm)واسه اون مشکلی پیش نمیاد؟
بعداینکه اگه 3قسمت بشه درصدم میادپایین فقط با 30قسمت درصدم زیادمیشه
همپوشان کردن تصویر ایجاد شده از lbp اشتباهه . تقسیم به سه تا هم اشتباه بود
اگه یادتون باشه ماطبق اون مقاله lbp برای چهره که به چندقسمت تقسیم کرده بود عمل کردیم یعنی اون مقاله هم به اشتباه این کاروکرده؟
1.درسته ولی کدی که واسه lbpدفعه اول طبق مقاله نوشتیم اون 3تا m بعدازlbp هستش یا اینکه من دارم اشتباه میکنم؟
2.اگه میشه این راهنمایی رو هم بکنید که چطوراول تکه تکه کنم بعدlbp بگیرم
حق با شماست در اون مقاله اول lbp گرفته بود بعد تکه تکه کرده بود اما یک نکته که وجود داره اینه که تصویر در اونجا مربعی هست اما اینجا مستطیلیه که باعث میشه تصویر lbp از پلاک به صورت 3 تا پلاک چسبیده به هم در بیاد که برای همین بهتره اول تصویر تکه تکه بشه بعد lbp بگیریم
zdata=[];
map1=getmapping(8,'u2');
map2=getmapping(16,'u2');
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
bwim=imread(file);
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
n_zernik = 12;
zimg = [lbp(bwim,2, 8,map1,'h') , lbp(bwim ,2, 16,map2,'h')];
moraba_koochek = tedade_moraba*2 + 1;
for m = (0:2:( moraba_koochek -3))
zimg=[zimg lbp( bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)),1, 8,map1, 'h')];
end
zdata = [zdata; zimg];
end
dlmwrite ( 'data.csv' , zdata);
1.پس با این حساب این lbpاولی که نوشتیم درست نیست مشکل پیش میاد؟منظورم این برنامست
image_files=dir(fullfile(cd,'\*.jpg'));
mkdir('lbp');
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name=image_files(Q).name;
file=strcat(current_directory,'\',file_name);
pelak=imread(file);
%pelak=rgb2gray(c);
tool=size(pelak,2);
arz=size(pelak,1);
map1=getmapping(8,'u2');
map2=getmapping(16,'u2');
Ilbp=LBP(pelak,1,8,map1,'i');
tool=size(Ilbp,2);
arz=size(Ilbp,1);
m1=Ilbp(:,1:round(tool*3/7));
m2=Ilbp(:,round(tool*2/7)+1:round(tool*5/7));
m3=Ilbp(:,round(tool*4/7)+1:tool);
bins = map1.num;
H1=hist(m1(:), 0:(bins-1));
H2=hist(m2(:), 0:(bins-1));
H3=hist(m3(:), 0:(bins-1));
figure,subplot(3,1,1),plot(H1),subplot(3,1,2),plot (H2),subplot(3,1,3),plot(H3)
H4=LBP(pelak,2, 8,map1,'h');
H5=LBP(pelak,2, 16,map2,'h');
figure,subplot(2,1,1),plot(H4),subplot(2,1,2),plot (H5)
H=[H1, H2, H3, H4, H5];
figure,plot(H);
filesave=strcat(current_directory,'\lbp\hist-',file_name,'.txt');
dlmwrite(filesave,H);
end
آخرین ویرایش به وسیله sama.66 : دوشنبه 21 مهر 1393 در 11:46 صبح
اولی درست نیست همین آخری که نوشتم به کار ببرید ( به همون علتی که گفتم)
این که درست حله lbp همراه بازرنیک هستش،میخوام برنامه اولی رو تغییرش بدم چون یکمی مدل lbpگرفتنش متفاوت بوده که دراخرم باید جمع میکریم همشو.
آخرین ویرایش به وسیله sama.66 : شنبه 26 مهر 1393 در 15:56 عصر
اصلا کد را نگاه کردید؟ زرنیک کجا بود؟ فقط lbp هست
ببخشید که اینقدمزاحمتون میشم ازتون ممنونم که باصبروحوصله جواب میدین من یکمی گیج شدم،خب شما توی این کدچون این رو نوشتید n_zernik = 12;،من فکر میکردم بعدازlbp زرنیک میگیره منظورم این کدهستش
zdata=[];
map1=getmapping(8,'u2');
map2=getmapping(16,'u2');
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
bwim=imread(file);
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
n_zernik = 12;
zimg = [lbp(bwim,2, 8,map1,'h') , lbp(bwim ,2, 16,map2,'h')];
moraba_koochek = tedade_moraba*2 + 1;
for m = (0:2:( moraba_koochek -3))
zimg=[zimg lbp( bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)),1, 8,map1, 'h')];
end
zdata = [zdata; zimg];
end
dlmwrite ( 'data.csv' , zdata);
آخرین ویرایش به وسیله sama.66 : شنبه 26 مهر 1393 در 15:57 عصر
دو تای اولی که مشخص شد . این هم سومی
zdata=[];
image_files=dir(fullfile(cd,'\*.jpg'));
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples
file_name =image_files(Q).name;
file= strcat(current_directory,'\',file_name);
c=imread(file);
level=graythresh(c);
bwim=im2bw(c,level).*255;
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
n_zernik = 12;
zimg = [abs(zerniketest(lbp(bwim,2, 8,map1,'i'),n_zernik)) , abs(zerniketest(lbp(bwim ,2, 16,map2,'i',n_zernik)))];
moraba_koochek = tedade_moraba*2 + 1;
for m = (0:2:( moraba_koochek -3))
zimg=[zimg abs(zerniketest(lbp( bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)),1, 8,map1, 'i'),n_zernik))];
end
zdata = [zdata; zimg];
end
dlmwrite ( 'data.csv' , zdata);
ممنونم،این ارور رو داد
Undefined function or variable 'map1'.
Error in Untitled8 (line 19)
zimg = [abs(zerniketest(lbp(bwim,2, 8,map1,'i'),n_zernik)) ,
abs(zerniketest(lbp(bwim ,2, 16,map2,'i',n_zernik)))];
منم بعدازzdata دوتادستورات map روگذاشتم ودوباره این اررو رو میده
Error using lbp (line 47)
Too many input arguments.
Error in Untitled8 (line 20)
zimg = [abs(zerniketest(lbp(bwim,2, 8,map1,'i'),n_zernik)) ,
abs(zerniketest(lbp(bwim ,2, 16,map2,'i',n_zernik)))];
zimg = [abs(zerniketest(lbp(bwim,2, 8,map1,'i'),n_zernik)) , abs(zerniketest(lbp(bwim ,2, 16,map2,'i'),n_zernik))];