function imgrad=shiyan1a=imread('klj.jpg');imshow(a);[x y]=ginput(2);x=round(x);y=round(y);n1=abs(x(1)-x(2))+1;n2=abs(y(1)-y(2))+1;[n which_max]=max([n1,n1]);imgrad=ones(3,n);for i=1:3 b=a(:,:,i); if y(1)<y(2)&&x(1)<x(2) if which_max==1 xx=x(1):x(2); yy=subf(x,y,xx); else yy=y(1):y(2); xx=subf(x,y,yy); end elseif y(1)<y(2)&&x(1)>x(2) if which_max==1 xx=x(2):x(1); yy=subf(x,y,xx); else yy=y(1):y(2); xx=subf(x,y,yy); end elseif y(1)>y(2)&&x(1)<x(2) if which_max==1 xx=x(1):x(2); yy=subf(x,y,xx); else yy=y(2):y(1); xx=subf(x,y,yy); end elseif y(1)>y(2)&&x(1)>x(2) if which_max==1 xx=x(2):x(1); yy=subf(x,y,xx); else yy=y(2):y(1); xx=subf(x,y,yy); end end ind=sub2ind(size(b),yy,xx); data=b(ind); data=double(data); imgrad(i,:)=gradient(data);endfunction coordinate=subf(x,y,input)k=(y(1)-y(2))/(x(1)-x(2));if abs(x(1)-x(2))>=abs(y(1)-y(2)) coordinate=k*(input-x(1))+y(1); coordinate=round(coordinate);else coordinate=(input-y(1))/k+x(1); coordinate=round(coordinate);end 以上代码是用来给图片求颜色变化梯度的,求出来的是一个3行n列的矩阵,我想给这个矩阵赋予一个名称,方便后面对其进行操作,但是不知道该怎么添加代码,请高手解惑,谢谢!!! |