matlab大神帮忙解答一下这个证明不等式的问题!!
2个回答
展开全部
这个函数里inpoly这个函数 matlab里面没有(用的2014a),是不是自己编的?
function [R cx cy]=max_inscribed_circle(ContourImage, display)
% get the contour
sz=size(ContourImage);
[Y,X]=find(ContourImage==255,1, 'first');%找到第一个非零点
contour = bwtraceboundary(ContourImage, [Y(1), X(1)], 'W', 8);%调用函数进行边缘跟踪。
X=contour(:,2);%边缘x轴坐标
Y=contour(:,1);%边缘y轴坐标
% find the maximum inscribed circle:
% The point that has the maximum distance inside the given contour is the
% center. The distance of to the closest edge (tangent edge) is the radius.
tic();
BW=bwdist(logical(ContourImage));%进行距离边缘,用的是欧式距离。BW中每一点的值是
%ContourImage中每一点到距离它最近的非零值的距离(欧式距离)
[Mx, My]=meshgrid(1:sz(2), 1:sz(1));
[Vin Von]=inpoly([Mx(:),My(:)],[X,Y]);%这个函数的作用
%我估计是判断Mx,My中哪些点实在上文检测出的轮廓中,并把它们的线性索引值保存在Vin与 %Von中
ind=sub2ind(sz, My(Vin),Mx(Vin));%变换为线性索引
[R RInd]=max(BW(ind));%求取距离值最大的点的线性索引,R为最大距离,Rind为线性索引
R=R(1); RInd=RInd(1); % handle multiple solutions: Just take first.
[cy cx]=ind2sub(sz, ind(RInd));%将线性索引转化为x,y坐标
toc();
function [R cx cy]=max_inscribed_circle(ContourImage, display)
% get the contour
sz=size(ContourImage);
[Y,X]=find(ContourImage==255,1, 'first');%找到第一个非零点
contour = bwtraceboundary(ContourImage, [Y(1), X(1)], 'W', 8);%调用函数进行边缘跟踪。
X=contour(:,2);%边缘x轴坐标
Y=contour(:,1);%边缘y轴坐标
% find the maximum inscribed circle:
% The point that has the maximum distance inside the given contour is the
% center. The distance of to the closest edge (tangent edge) is the radius.
tic();
BW=bwdist(logical(ContourImage));%进行距离边缘,用的是欧式距离。BW中每一点的值是
%ContourImage中每一点到距离它最近的非零值的距离(欧式距离)
[Mx, My]=meshgrid(1:sz(2), 1:sz(1));
[Vin Von]=inpoly([Mx(:),My(:)],[X,Y]);%这个函数的作用
%我估计是判断Mx,My中哪些点实在上文检测出的轮廓中,并把它们的线性索引值保存在Vin与 %Von中
ind=sub2ind(sz, My(Vin),Mx(Vin));%变换为线性索引
[R RInd]=max(BW(ind));%求取距离值最大的点的线性索引,R为最大距离,Rind为线性索引
R=R(1); RInd=RInd(1); % handle multiple solutions: Just take first.
[cy cx]=ind2sub(sz, ind(RInd));%将线性索引转化为x,y坐标
toc();
追问
大神你这写的我看不懂(一脸懵逼),怎么用啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询