长度,matlab – 获取BW或RGB图像中不规则对象的长度并将其绘制到图片中以进行控制..."/>
matlab 图片物体长度,matlab – 获取BW或RGB图像中不规则对象的长度并将其绘制到图片中以进行控制...
我面临一个众所周知的问题,我无法解决.
我有根的图片(
).从这张照片中,我想知道最长根的长度(第一个问题),大根的部分和小根的百分比(说直径作为第二个问题的方向).重要的是,我可以区分细根和大根,因为这或多或少是研究的目的(它们的一部分在不同物种之间进行比较).最后一件事,我想沿测量的最长根绘制一条线来检查是否所有测量都正确.
对于最长根的长度,我尝试使用regionprops(),这不是最佳的,因为如果我这样做,假设椭圆形为基本形状.
但是,我真正需要支持的事实是:
如何获得最长根的长度(起始点应该是最长根离开主根的最大直径的位置)?
有可能区分细根和大根,我可以得到它们的一部分吗? (硬币,图像中的圆形物体是参考)
我可以在图片中绘制长度和直径等属性吗?
我发现了如何绘制椭圆和东西的中心,但我只是不明白如何用建议的值来做.
我希望这不是双重帖子,这个问题在其他地方不存在,如果是的话,我很抱歉.
我要感谢这个论坛上的人们,你做得很好,有问题的每个人都很幸运能有你在这里.
感谢您的帮助,
菲利普
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
编辑
我按照提出的解决方案,直到现在的代码如下:
clc
clear all
close all
img=imread('root_test.jpg');
labTransformation = makecform('srgb2lab');
labI = applycform(img,labTransformation);
%seperate l,a,b
l = labI(:,:,1);
a = labI(:,:,2);
b = labI(:,:,3);
level = graythresh(l);
bw = im2bw(l);
bw = ~bw;
bw = bwareaopen(bw, 200);
se = strel('disk', 5);
bw2=imdilate(bw, se);
bw2 = imfill(bw2, 'holes');
bw3 =bwmorph(bw2, 'thin', 5);
bw3=double(bw3);
I4 = bwmorph(bw3, 'skel', 200);
%se = strel('disk', 10);%this step is for better visibility of the line
%bw4=imdilate(I4, se);
D = bwdist(I4);
这导致我的骨架图片 – 这是一个很大的进步,谢谢你!
我有点想要计算距离.我如何解释MatLab必须计算从所有小根到主根的距离(如何定义?)?为此,我必须首先使用直径,对吧?
您是否可以给出一个或另一个提示更多如何完成距离/长度问题?
谢谢你们的帮助,直到这里!
菲利普
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
EDIT2
好的,我设法将单个根部分开.这不是你的编辑提出的,但至少是一些东西.我也有所有根的总长度 – 也不错.但即使(我假设)超级简单的一步一步的解释,我从来没有见过这样的树.我停下来,我必须选择一个看不见的点 – 其余的对我来说太先进了.
我不想浪费更多的时间,我非常感谢你给我的帮助.但我想我太MatLab愚蠢,以实现这一目标:)
谢谢!继续这样,这真的很有帮助.
菲利普
更多推荐
matlab 图片物体长度,matlab – 获取BW或RGB图像中不规则对象的长度并将其绘制到图片中以进行控制...
发布评论