# مباحث متفرقه برنامه نویسی > برنامه نویسی Matlab >  rahnamaiy

## sama.66

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

----------


## sama.66

مهندس میشه راهنماییم کنید؟

----------


## rahnema1

سلام
این هم مثل همون قبلی ها تفاوت چندانی نداره الان مشکل کجاست؟

----------


## sama.66

rastesh yekami vasam mobhame, chetor azashun estefade konam

----------


## rahnema1

شما شروع کنید هر جا اشکال داشتید بگید تا برطرف کنیم

----------


## sama.66

alan in zernik be surate functione khob tasav
iro chetor bedam k bekhune

----------


## rahnema1

فایل 5 را باز کنید دستورالعمل را در خط اول می بینید
function	[A_nm,zmlist,cidx,V_nm]	= zerniketest(img,n,m) 
اولین پارامتر تابع یک تصویر هست و دومی هم که n هست. کافیه همین دو تا وارد بشه
تصویر ها هم که قبلا گفته بودم چه طور بخونید

----------


## sama.66

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.

----------


## rahnema1

لطفا کدی که نوشتید را اینجا بذارید

----------


## sama.66

ok.........................

----------


## rahnema1

نه این جور که نمیشه. احتمالا شما هم فرصت یاد گرفتن متلب را نداشته باشید 
یک سوال : اون برنامه قبلی که با local zernike moment بود را به درد نخورد؟ جوابها هم که خیلی خوب بود

----------


## sama.66

oun khub bud vali  ostad goftan bayad zarayebesho be in shekl be dast biyarim k ba code matlab bashe

----------


## rahnema1

اون روش که استفاده کردیم با این روش که الان استاد شما گفته کمی متفاوته و چون حجم محاسبات در اون روش زیاد بود با متلب زمان زیادی می گرفت که کد ++c استفاده شد و فکر کنم جوابش هم بهتر باشه 

فقط چند تا سوال دیگه: از استادتون بپرسید 1. آیا لازمه تصاویر قبل از ورود به زرنیک، به باینری ( سیاه و سفید) تبدیل بشن؟
2. آیا ضرایب زرنیک که به صورت مختلط هست قسمت حقیقی اون باید استفاده بشه یا قسمت موهومی؟

----------


## sama.66

ok ta chan daghighe dg behetun etela midam

----------


## sama.66

باینری باید باشه بعد گفتن می تونین abs بگیرین که اندازه بشه،دستور absمقدار اندازه ردپو حساب میکنه

----------


## rahnema1

دو تا برنامه هست ابتدا در هر کدام از فولدر های پلاک و غیر پلاک وارد شوید و برنامه اول را برای هر کدام اجرا کنید. دو تا فایل به نام 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

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

----------


## rahnema1

> ممنونم،این کد میاد فقط یه بارازتصویرخام زرنیک میگیره بعدش هم ازمربع های همپوشان،
> 1.( auc=90% شده اگه به جای سه قسمت به قسمتهای بیشتری تقسیم کنم امکان داره درصدم بیشتربشه؟)
> 
> 2.اگه بخوام واسه مرحله ی بعدی کارم اول lbpبگیرم بعد ازروی lbp ضرایب زرنیکش روحساب کنم چطورمیشه؟
> 3.استادم گفته بودکه به صورت دستی داده های تست وترین رو بدم به کلاسیفایر(برای اینکه گزارش رو خوب بنویسم بایددستی اینکاروبکنم) بعدکلاساشوبگیرم بدم به roc که پلاتشو رسم کنم،ازکدی که خودش داده واسه کلاسیفایرمیشه استفاده کرد؟دراین موردم راهنماییم کنیدلطفا


1. معلوم نیست باید بررسی بشه
2. فکر نکنم جواب بهتری بده. باید بررسی بشه
3. ما که همین کار را کردیم و تست و ترین را دادیم به کلاسیفایر( فقط استادتون کدها را یه کم دیر ارائه کردند چون خودمون کدها را قبلا پیدا کرده و یا نوشته بودیم )
برای svm از libsvm استفاده کردیم که در اون مقاله هم از همین استفاده شده بود
از دستورات خود متلب هم جهت ایجاد roc استفاده کردیم

----------


## sama.66

این کدی که شما لطف کردید فقط از تصویر خام هستش ,برای این مرحله میخوام برای lbpهم  زرنیک بگیرم ( اول lbp بگیرم بعد ضرایب زرنیک رو از روی lbp حساب کنم )

----------


## rahnema1

کد 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);

----------


## sama.66

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);

----------


## rahnema1

بله مثل همون قبلیه و zerniktest هم همون جا باشه

----------


## sama.66

مرسی یه راهنمایی دیگه بکنید لطفا که چجوری به جای 3مربع به مربع های بیشترتبدیل کنم

----------


## rahnema1

> مرسی یه راهنمایی دیگه بکنید لطفا که چجوری به جای 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);

----------


## sama.66

مهندس برای 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);

----------


## rahnema1

تکه تکه کردن lbp به صورت همپوشان کار درستی نیست. علتش عم اینه که تصویر lbp بعضی وقتها از تکرار چند تصویر اصلی در کنار هم ایجاد میشه و همپوشان کردن اون صحیح نیست

----------


## sama.66

خب ما که یه بار به 3 قسمت تقسیم کردیم (3تاm)واسه اون مشکلی پیش نمیاد؟
بعداینکه اگه 3قسمت بشه درصدم میادپایین فقط با 30قسمت درصدم زیادمیشه

----------


## rahnema1

همپوشان کردن تصویر ایجاد شده از lbp اشتباهه . تقسیم به سه تا هم اشتباه بود

----------


## sama.66

اگه یادتون باشه ماطبق اون مقاله lbp برای چهره که به چندقسمت تقسیم کرده بود  عمل کردیم یعنی اون مقاله هم به اشتباه این کاروکرده؟

----------


## rahnema1

> اگه یادتون باشه ماطبق اون مقاله lbp برای چهره که به چندقسمت تقسیم کرده بود  عمل کردیم یعنی اون مقاله هم به اشتباه این کاروکرده؟


ببین، یه تصویر اصلی داریم که میشه تکه تکه کرد اما تصویر lbp را نمیشه تکه تکه کرد
توی اون مقاله در ابتدا تصویر را تکه تکه می کرد و بعد lbp می گرفت نه اینکه بخواد اول تصویر lbp را درست کنه و بعد اون را تکه تکه کنه. دقت!

----------


## sama.66

1.درسته ولی کدی که واسه lbpدفعه اول طبق مقاله نوشتیم اون 3تا m بعدازlbp هستش یا اینکه من دارم اشتباه میکنم؟ 
 2.اگه میشه این راهنمایی رو هم بکنید که چطوراول تکه تکه کنم بعدlbp بگیرم

----------


## rahnema1

حق با شماست در اون مقاله اول 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);

----------


## sama.66

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

----------


## rahnema1

اولی درست نیست همین آخری که نوشتم به کار ببرید ( به همون علتی که گفتم)

----------


## sama.66

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

----------


## rahnema1

اصلا کد را نگاه کردید؟ زرنیک کجا بود؟ فقط lbp هست

----------


## sama.66

ببخشید که اینقدمزاحمتون میشم ازتون ممنونم که باصبروحوصله جواب میدین من یکمی گیج شدم،خب شما توی این کدچون این رو نوشتید 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);

----------


## rahnema1

دو تای اولی که مشخص شد . این هم سومی

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);

----------


## sama.66

ممنونم،این ارور رو داد 
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)))];

----------


## rahnema1

zimg = [abs(zerniketest(lbp(bwim,2, 8,map1,'i'),n_zernik)) , abs(zerniketest(lbp(bwim ,2, 16,map2,'i'),n_zernik))];

----------


## sama.66

عذرمیخوام بازم،بتوضیح مرحله 1 به این صورت میشه؟

----------


## rahnema1

درسته فقط یک نکته را باید اضافه کنید که از بافت lbp به دست اومده از هر تصویر ،هیستوگرام تهیه می کنیم و اون هیستوگرامها را به هم متصل می کنیم

----------


## sama.66

plot(zimg به صورت کلی نمایش میده،برای هرمرحله نمیشه جداهیستوگرامهارو پلات کنم ؟

----------


## rahnema1

همون zdata شامل هیستوگرامها هست که تعدادشون خیلی زیاده همچنین در فایل data.csv ذخیره کردید

zdata = dlmread('data.csv');
for i = 1:size(zdata,1)
    figure,plot(zdata(i,:))
end

----------


## sama.66

درسته دفعه ی قبل برای مثلا یک پلاک میتونستم برای هرقسمتش پلات کنم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)
 به خاطر گزارش نوشتن بایدبرای یک پلاک هیستوگرام همه مراحلش رونمایش بدم.این کدی شمادادید مجموع هیستوگرامهارونمایش میده؟

----------


## rahnema1

ببخشید در برنامه شماره 3 اشتباه رخ داده بود که اولی برنامه 3 و دومی برنامه ترسیم هیستوگرامها هست

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);
tedade_moraba = 3;
n_zernik = 12;
moraba_koochek = tedade_moraba*2 + 1;
zer=@(bwim) abs(zerniketest(bwim,n_zernik));
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);
	L1=lbp(c ,2, 8,map1,'i');
	level=graythresh(L1);
	bwim1=im2bw(L1,level).*255;
	L2=lbp(c ,2, 16,map2,'i');
	level=graythresh(L2);
	bwim2=im2bw(L2,level).*255;
	zimg = [zer(bwim1) , zer(bwim2)];
	for m = (0:2:( moraba_koochek -3))
		L=lbp(c(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)),1, 8,map1,'i');
		level=graythresh(L);
		bwim=im2bw(L,level).*255;
		zimg=[zimg zer(bwim)];
	end
	zdata = [zdata; zimg];
end
dlmwrite ( 'data.csv' , zdata);


اگه اسم فایل مورد نظر myfile.jpg باشه اینطور می شه

bwim=imread('myfile.jpg');
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
h1 = lbp(bwim,2, 8,map1,'h');
figure,plot(h1)
h2 = lbp(bwim ,2, 16,map2,'h');
figure,plot(h2)
zimg = [ h1, h2];
moraba_koochek = tedade_moraba*2 + 1;
for m = (0:2:( moraba_koochek -3))
	h=lbp( bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)),1, 8,map1, 'h');
	figure,plot(h)
	zimg=[zimg h];
end
figure,plot(zimg)

----------


## sama.66

متشکرم،یه سوال دیگه اگه تعداد مربع هارو بیشترکنم نیازی نیست جایی زبرنامه تغییرکنه؟؟

----------


## rahnema1

نه مشکلی نیست

----------


## sama.66

سلام مهندس من برای تحلیل دقیق برنامه ها چندتادیه سوال دارم بااجازتون میپرسم

درمورد تعدادمربع ها میخوام بدونم به چه صورت تقسیم شده متوجه اون قسمت ازکد نمیشم اگه میشه یه توضیح بدید بعداینکه چطوری میشه تصویرمربع هارو ببینم

----------


## rahnema1

این کد را اجرا کنید خودتون متوجه می شید

bwim = imread('myimage.jpg');
tool=size(bwim,2);
arz=size(bwim,1);
tedade_moraba = 3;
moraba_koochek = tedade_moraba * 2 + 1;
aks = 1;
for m = (0:2:( moraba_koochek -3))
	subplot(1, tedade_moraba, aks)
	imshow(bwim(: ,(round(tool* m/moraba_koochek)+ 1) :round(tool *(m + 3) /moraba_koochek)))
	aks = aks + 1;
end
figure, imshow(bwimg);

----------


## sama.66

توی قسمت دوم برنامه(زرنیک)،zdata شامل هیستوگرامهای مربوط به زرنیک هستش و zimgهمان ضرایب زرنیک هست؟؟؟داده های جفتشون شبیه همه

----------


## rahnema1

قسمت دوم کدوم برنامه؟
zdata که ماتریس هست که هر سطرش برابر با هیسو گرام یک تصویر هست 
اما zimg فقط هیستوگرام یک تصویر داخلش قرار داده میشه
ترکیب zimg ها میشه zdata

----------


## sama.66

منظورم برنامه ی زرنیک بوده میخواستم ببینم ضرایب زرنیک کجاسیومیشه

میشه  راهنماییم کنید که چطوری میتونم مثلا هرکد رو به همراه svmتوی یک فایل  داشته باشم نه اینکه بخوام یک کدرواجراکنم بعد بیام svm رو جدا اجراکنم

----------


## rahnema1

هر دو کد را داخل یک فایل بذارید مشکل حل میشه

----------


## sama.66

منظورم اینه که کدها به این شکل بشه: توی یک برنامه هم پلاک و هم غیرپلاک رو بخونه و data.csvمربوط به جفتشودرست کنه و بده به svm
همه ی اینا توی یک برنامه باشه نیازی نباشه هرکدام جدااجرابشه

----------


## rahnema1

الان مگه نتونستید اجرا کنید؟ اگه می خواهید به یکی دیگه بدید اجرا کنه یه سری توضیحات هم کنارش بذارید تا بتونه استفاده کنه

----------


## sama.66

نه ببینید کدهارو که جدااجرامیکنم مشکلی نیست
من میخوام به این شکل توی یک برنامه باشه

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;
    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);

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);

----------


## rahnema1

از روی همون برنامه های قبلی انجام بدید
همین قدر که تونستید از اینها جواب بگیرید برای من کافیه
برای شما آرزوی موفقیت می کنم

----------


## sama.66

مرسی مهندس خیلی زحمت کشیدیدمن که جواب گرفتم ولی کاش این اخرین لطفتون هم  دریغ نمیکردیدبه همون صورتی که گفتم هرکدبتونه با یه دفعه اجراکردن ازدوتا  فولدرپلاک و غیرپلاک تصویرروبخونه و دوتا فایل دیتا به اسم پلاک ونان پلاک  درست کنه وهمونجا svmبگیره 
که بتونم یه ساماندهی به برنامه بدم  (اینجوری که هرکد بایدچنددفعه جدااجرابشه یه دفعه واسه پلاک یکبارواسه نان  پلاک و یک دفعه هم واسه svm خیلی زمان بر هستش )اینجوری  زمان اجرای برنامه  پایینتر میادوبرای همه قابل اجرامیشه بدون توضیح اضافه

----------


## sama.66

سلام مهندس
توی برنامه ی svm ماواسه ازمایش 620 تاداده ازپلاک و نان پلاک جداکردیم که به این صورت تشخیص داده میشه 
Accuracy = 96.6129% (599/620) (classification)
از620 تا 599 تا رو تشخیص داده،سوال من اینه ازکجابایددونست چندتا از پلاک و چندتااز نان پلاک رو تشخیص داده؟؟چون این 599تاجمعشونه نمیشه تشخیص داد

----------


## sama.66

سلام
برای رسم منحنی roc وسطح زیرمنحنی باauc میشه راهنماییم کنید؟؟؟؟

----------


## hhamidy

> 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.


سلام

میبخشید من متوجه نشدم که m,n چی هستن در این کد!

چرا n رو 12 در نظر گرفتین؟!

----------


## sama.fa

باسلام من میخوام از فرکانس بالا رو تصویر استخراج ویژگی کنم (همون فیلتربالاگذر گوسی ) میشه بگید چطوری باید از فیلتربالاگذر گوسی بردارویژگی استخراج کنم؟؟؟؟؟؟؟

----------


## hhamidy

> دو تا برنامه هست ابتدا در هر کدام از فولدر های پلاک و غیر پلاک وارد شوید و برنامه اول را برای هر کدام اجرا کنید. دو تا فایل به نام 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;
> ...


سلام.
امکانش هست بفرمایید دقیقا از چه تولباکسی استفاده کردید(مسیر نصبش رو).

من از این تولباکس استفاده کردم ولی ظاهرا درست پیش بینی رو نشون نمیده:

https://www.csie.ntu.edu.tw/~cjlin/libsvm/

وقتی از خود svm متلب هم استفاده می کنم، مرحله ی svmstruct=svmtrain(و... و همینطور و... out=svmclassify(svmstruct رو صحیح نشون میده اما زمیانی که پیش بینی رو میخوام:

)
predicate=svmPredict(out,testlabel, testsample);


پیغام میده که:
Error using svmPredict
Too many input arguments.

میدونید مشکل کجاست؟!

----------

