چگونه میتونم از گرادیان به عنوان ویژگی برای تشخیص کاراکتر در متلب استفاده کنم؟ ویژگی که از گرادیان حاصل میشود یک مقدار عددی است یا یک بردار؟کسی کد مربوطه را داره؟
-------------------------------------------------------
من سوالم رو اینطوری بپرسم بهتره در واقع من میخواهم کاری رو که در عکس زیر امده است انجام بدم. یک کدی هم نوشتم اما بنظرم کد مشکل داره اگه کسی اونو چک کنه ممنون میشم. کجای کد مشکل داره؟؟؟؟؟
clc;
clear all;
close all;
% [~,~,im] = imread('Glyph171.png');
im=imread('coins.png');
[Edges, Gdir] = imgradient(im,'Sobel');
Theta= wrapTo360(Gdir);
[height width R]=size(im);
f= zeros(1,16); % phase value
for i=1:height
for j=1:width
if(Theta(i,j)>=0)&&(Theta(i,j)<22.5)
f(1) = f(1)+Edges(i,j);
elseif(Theta(i,j)>=22.5)&&(Theta(i,j)<45)
f(2) = f(2)+Edges(i,j);
elseif(Theta(i,j)>=45)&&(Theta(i,j)<67.5)
f(3) = f(3)+Edges(i,j);
elseif(Theta(i,j)>=67.5)&&(Theta(i,j)<90)
f(4) = f(4)+Edges(i,j);
elseif(Theta(i,j)>=90)&&(Theta(i,j)<112.5)
f(5) = f(5)+Edges(i,j);
elseif(Theta(i,j)>=112.5)&&(Theta(i,j)<135)
f(6) = f(6)+Edges(i,j);
elseif(Theta(i,j)>=135)&&(Theta(i,j)<157.5)
f(7) = f(7)+Edges(i,j);
elseif(Theta(i,j)>=157.5)&&(Theta(i,j)<180)
f(8) = f(8)+Edges(i,j);
elseif(Theta(i,j)>=180)&&(Theta(i,j)<202.5)
f(9) = f(9)+Edges(i,j);
elseif(Theta(i,j)>=202.5)&&(Theta(i,j)<225)
f(10) = f(10)+Edges(i,j);
elseif(Theta(i,j)>=225)&&(Theta(i,j)<247.5)
f(11) = f(11)+Edges(i,j);
elseif(Theta(i,j)>=247.5)&&(Theta(i,j)<270)
f(12) = f(12)+Edges(i,j);
elseif(Theta(i,j)>=270)&&(Theta(i,j)<292.5)
f(13) = f(13)+Edges(i,j);
elseif(Theta(i,j)>=292.5)&&(Theta(i,j)<315)
f(14) = f(14)+Edges(i,j);
elseif(Theta(i,j)>=315)&&(Theta(i,j)<337.5)
f(15) = f(15)+Edges(i,j);
elseif(Theta(i,j)>=337.5)&&(Theta(i,j)<360)
f(16) = f(16)+Edges(i,j);
end
end
end
لطفا منو راهنمایی بفرمایید