- 积分
- 0
- 注册时间
- 2010-3-13
- 仿真币
-
- 最后登录
- 1970-1-1
|
function imgrad=shiyan1
a=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);
end
function 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
以上是我照着例子写的一个对图像求RGB值梯度的问题,我现在遇到一个问题,我想往里面继续写程序,希望对求出来的梯度矩阵进行处理,但是遇到点麻烦,第一,找不到梯度矩阵的名称。第二,我在后面继续写程序,貌似是在对第2个function里面的内容进行操作,无法对梯度矩阵进行操作,请高手帮忙解下惑,多谢!!! |
|