24小时热门版块排行榜    

查看: 984  |  回复: 2

Jane_li

新虫 (初入文坛)

[交流] 【求助】请matlab高手来看看这个计算图形边缘点的曲率的程序

我的这个程序是想要计算已分割出来的边界点的曲率,运用maximum curvature的理论来识别under-segmented的区域的拐点,从而把挨在了一起的细胞核分割开来。但是现在程序计算出来的曲率有问题,非0即NAH.很奇怪。公式也没有用错。
|x'y''-y'x''|/(x'^2+y'^2)^(3/2)

eg=edge(bwimage,'sobel');
figure,imshow(eg);

% find edge points
[x y]=find(eg==1);

% calculate the derivative of x and y
dy=diff(y,1);
dy2=diff(y,2); % 2ed order derivative
dy1=dy(1: (size(dy,1)-1)); % 1st order derivative
dx=diff(x,1);
dx2=diff(x,2);
dx1=dy(1: (size(dx,1)-1));

%calculate the curvature of each points
K=abs(dx1.*dx2-dx2.*dy1)./((dx1.^2+dy1.^2).^(3/2));

请兄弟姐妹们指导一下啊

[ Last edited by Jane_li on 2010-10-7 at 21:27 ]
回复此楼

» 猜你喜欢

learning,accumulation,andprogressing
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

string121

金虫 (小有名气)

★ ★
mze04532(金币+2):热心应助,认真回帖~加分 2010-10-15 13:42:10
Jane_li(金币+10):谢谢哦 2011-01-14 13:50:14
引用回帖:
Originally posted by Jane_li at 2010-10-07 19:23:01:
我的这个程序是想要计算已分割出来的边界点的曲率,运用maximum curvature的理论来识别under-segmented的区域的拐点,从而把挨在了一起的细胞核分割开来。但是现在程序计算出来的曲率有问题,非0即NAH.很奇怪。公 ...

1:
改为
...
dx1=dx(1: (size(dx,1)-1));
%calculate the curvature of each points
K=abs(dx1.*dy2-dx2.*dy1)./((dx1.^2+dy1.^2).^(3/2)+eps);
2:
即使这样改了,结果也不会是曲率值。原因是上述曲率公式要求x,y关于参数二阶可导,用find找出的序列肯定不满足。除非就是垂直向下的直线。
2楼2010-10-15 13:00:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

q10008

禁言 (初入文坛)

本帖内容被屏蔽

3楼2010-10-16 00:18:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Jane_li 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见