在matlab中怎么手动提取一个点

在matlab中怎么手动提取一个点,第1张

在figure窗口点击tool菜单,选中data cursor,然后在图形区单击鼠标右键,选择create new datatip,就可以手工标注任意一点的坐标值了。 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化

新建个ff.m文件:

%% MATLAB R2013a

function feature = ff(im)

rot = @(t)[cos(t) -sin(t) sin(t) cos(t)]

im = ~im2bw(im)

Size = size(im)

CC = bwconncomp(im)

feature = zeros(CC.NumObjects, 1)

for i = 1:CC.NumObjects

    [x, y] = ind2sub(Size, CC.PixelIdxList{i})

    t = fminsearch(@(t)Loss([x y], t), 0)

    [~, width] = Loss([x y], t)

    feature(i) = width(1)/width(2)

end

feature = sort(feature, 1, 'descend')

function [Loss, width] = Loss(G, t)

    R = rot(t)

    G = G*R

    width = max(G, [], 1) - min(G, [], 1)

    Loss = -width(1)/width(2)

end

end

主程序

im = imread(图片名称)

feature = ff(im)

对于题目中的输入图片,得到的feature是:

分别对应四个区域的长宽比。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11615277.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存