我可以如何改变特定区域的几何(由点指定点),参照几何?
2视图(30天)
显示旧的评论
Ajay Goyal
2022年1月4日
我有两个pointclouds包含x, y, z的协调两个几何相似。说A和b是假设一个平方的大小是1毫米到1毫米。B也是一个平方大小的0.5毫米到0.5毫米。然而,在B一边扭曲(见附图)。现在我想改正它,这意味着,改变腔调大小0.5毫米到0.5毫米。有方法吗?
0评论
接受的答案
焉耆刘
2022年1月5日
clc;清晰的所有;关闭所有;
[X,地图,α]= imread (“https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/852940/Picture1.png”);
图;imshow(α);
bw = im2bw(α);
bw = bwareaopen (imfill (bw,“黑洞”),1000);
bw2 = bwareafilt (bw, 2);
bw (bw2) = 0;
[r、c] =找到(bw);
bw (min (r): max (r)、min (c): max (c)) = 1;
bw =逻辑(bw);
是= imdilate (bwperim (bw), strel (“磁盘”3));
α(是)= 255;
图;imshow(是);
图;imshow(α);
13个评论
Ajay Goyal
2022年1月5日
亲爱的刘焉耆,
我理解,这段代码已经把图像的像素2形成年产通过使用代码:
bw (min (r): max (r)、min (c): max (c)) = 1;
然而,我的目的是将图1中的几何映射到图2这样的形状会改变对图1。请发表评论。如果第一个图是一个圆,我必须映射形状(Figure2)开始。其实我有两个3 d几何与已知的协调。其中一个是引用而其他一些模型问题在某些领域。我必须纠正这些区域参照第1帧
焉耆刘
2022年1月6日
clc;清晰的所有;关闭所有;
[X,地图,α]= imread (“https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/852940/Picture1.png”);
图;imshow(α);
bw = im2bw(α);
bw = bwareaopen (imfill (bw,“黑洞”),1000);
%选择1、2块
[L ~] = bwlabel (bw);
统计= regionprops (bw);
矩形=猫(1、stats.BoundingBox);
[~,id] =(矩形,1);
%的第一
bw1 = L = = id (1);
[r、c] =找到(bw1);
bw1 = bw1 (min (r): max (r)、min (c): max (c));
%的第二个
bw2 = L = = id (2);
[r、c] =找到(bw2);
bw2 = bw2 (min (r): max (r)、min (c): max (c));
%变换bw1 bw2
在= [];
而1
在=[在;abs(长度(找到(bw1(:)))长度(找到(bw2 (:)))));
bw1 = bwmorph (bw1,“薄”);
如果长度(找到(bw1(:))) /长度(找到(bw2 (:))) < 0.5
打破;
结束
结束
[~,印第安纳州]= min ();
bwt = L = = id (1);
为我= 1:印第安纳州
bwt = bwmorph (bwt,“薄”);
结束
%替代
bwt =逻辑(bwt);
是= imdilate (bwperim (bwt) strel (“磁盘”3));
cen1 =统计(id (1)) .Centroid;
cen2 =统计(id (2)) .Centroid;
ts =圆(cen2-cen1);
be2 = imtranslate (ts);
%对起源
α(be2) = 255;
图;imshow(α);
Ajay Goyal
2022年1月6日
亲爱的刘焉耆,
谢谢你的更新代码。伟大的工作!它正在对不同的问题在2 d部分(请参阅附上的数据。)
这将是有趣的了解它可以被修改以符合三维点云(几何图形)?例如,
认为我有一个球体半径为2毫米的映射与轴椭球rius 2、1.5和3毫米x, y和z方向,分别。请检查附加的代码生成的数据映射。请让我知道,如果我能upvote你所有的反应。我相信,遇到类似的问题由其他研究人员和讨论可以帮助他们解决这些问题。我的研究问题尤其复杂得多。这是一个舞台,我卡住了,需要你的帮助。再次感谢!
Ajay Goyal
2022年1月6日
clc;清晰;关闭所有
% %参考几何是一个球体半径为2的单位
[x, y, z] =球;
x = 2 * x (:), y = 2 * y (:); z = 2 * z (:);
% %几何与中心演变是一个椭球(0,0,0)和轴半径2,1.5和3单位在x, y和z方向
(x1, y1, z1] =椭球(0,0,0、2、1.5、3);
x1 = x1 (:); y1 = y₁(:);z1 = z1 (:);
% %创建的点云数据。我们可以船这不是必要的
ptCloud1 = pointCloud ([x y z]);
ptCloud2 = pointCloud (((x1, y1 z1));
% %绘图数据
plot3 (x, y, z, k *)
等等,plot3 (x1, y1, z1, r *)
轴广场
焉耆刘
2022年1月6日
clc;清晰;关闭所有
% %参考几何是一个球体半径为2的单位
[x, y, z] =球;
x = 2 * x (:), y = 2 * y (:); z = 2 * z (:);
% %几何与中心演变是一个椭球(0,0,0)和轴半径2,1.5和3单位在x, y和z方向
(x1, y1, z1] =椭球(0,0,0、2、1.5、3);
x1 = x1 (:); y1 = y₁(:);z1 = z1 (:);
% %创建的点云数据。我们可以船这不是必要的
% ptCloud1 = pointCloud ([x y z]);
% ptCloud2 = pointCloud (((x1, y1 z1));
% %绘图数据
plot3 (x, y, z,“k *’)
轴广场
%的第一
[xf1, xps1] = mapminmax (x, 1, 1);
[yf1, yps1] = mapminmax (y, 1,1);
[zf1, zps1] = mapminmax (z, 1,1);
%的第二个
[xf2, xps2] = mapminmax (x1, 1,1);
[yf2, yps2] = mapminmax (y1, 1,1);
[zf2, zps2] = mapminmax (z1, 1, 1);
%第一,第二
xf = mapminmax (“反向”mapminmax (“应用”x1, xps1), xps2);
yf = mapminmax (“反向”mapminmax (“应用”,y1, yps1), yps2);
zf = mapminmax(的“反向”mapminmax (“应用”z1, zps1), zps2);
%的阴谋
图;
plot3 (xf、yf, zf,“k *’)
轴广场
Ajay Goyal
2022年1月6日
亲爱的焉耆,
我真的很感激你宝贵的帮助。我很高兴你的答案投票。请注意,代码为3 d不工作。由此产生的几何形状是相同的(椭球)而不是接近球体。没有任何点之间的区别(xf-x1、yf-y1 zf-z1在每一个点都是零)。
焉耆刘
2022年1月6日
是的,先生,可以检查
[x, y, z]和[xf、yf, zf)
这是对的吗?
clc;清晰;关闭所有
% %参考几何是一个球体半径为2的单位
[x, y, z] =球;
x = 2 * x (:), y = 2 * y (:); z = 2 * z (:);
% %几何与中心演变是一个椭球(0,0,0)和轴半径2,1.5和3单位在x, y和z方向
(x1, y1, z1] =椭球(0,0,0、2、1.5、3);
x1 = x1 (:); y1 = y₁(:);z1 = z1 (:);
% %创建的点云数据。我们可以船这不是必要的
% ptCloud1 = pointCloud ([x y z]);
% ptCloud2 = pointCloud (((x1, y1 z1));
% %绘图数据
plot3 (x, y, z,“k *’)
持有在;
plot3 (x1, y1, z1,“罗”)
轴广场
%循环
在= [];
rs = [];
x1t = x1; y1t = y₁; z1t = z1;
率= 1;
而1
在=[在;规范(y1-y) + (x1 x) +标准规范(z1-z)];
rs = [rs;率* 0.9);
率= - 0.01;
x1t = x1t *率;
y1t = y1t *率;
z1t = z1t *率;
如果规范(y1t) + (x1t) +标准规范(z1t) < 0.3 *规范(x1) +规范(y1) +规范(z1)
打破;
结束
结束
[~,印第安纳州]= min ();
xf = x1 * rs(印第安纳州);
yf = y₁* rs(印第安纳州);
zf = z1 *的rs(印第安纳州);
%的阴谋
图;
plot3 (x, y, z,“k *’)
持有在;
plot3 (xf、yf, zf,“废话”)
plot3 (x1, y1, z1,“罗”)
轴广场
传奇(“第一”,“拳头- >第二”,“第二”);
Ajay Goyal
2022年1月6日
亲爱的焉耆,
我检查在这两种几何图形,相同数量的点(441)。它应该像,否则我们可以做进一步的计算。很好!在某些情况下,如果有更多比其他点,可以使用“pcdownsample”命令来解决问题。它能减少数量的点没有影响几何的形状。
除此之外;两个点对应,如x(1)对应于x1 (1) x(2)对应于x1(2)等等。在大多数情况下,我们不可能得到信件。例如,请参阅附上的图片。1 - 4点不对应的只有5。我们可以解决这些问题吗?有没有一种方法通过我们可以重编号,这样可以保持通信。
问候,
Ajay
焉耆刘
2022年1月7日
是的,先生,可以使他们之间的关系,如
clc;清晰的所有;关闭所有;
[X,地图,α]= imread (“https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/855030/Picture1.png”);
图;imshow(α);
bw = im2bw(α);
bw2 = bwareaopen (imfill (bw,“黑洞”),1000);
bw2 = bwareafilt (bw2 2);
bw3 = bw;
bw3 (bw2) = 0;
bw4 = bw;
bw4 (~ bw2) = 0;
[L, num] = bwlabel (bw4);
statsp = regionprops (L);
statsp.Area areap =猫(1);
[~,id] =排序(areap,“下”);
bw4a = L = = id (1);
bw4b = L = = id (2);
cen1 = statsp .Centroid (id (1));
cen2 = statsp .Centroid (id (2));
ts =圆(cen1-cen2);
bw4b2 = imtranslate (bw4b, ts);
bw4ab =逻辑(bw4a + bw4b2);
%确定每个数字
[r、c] =找到(bw4);
统计= regionprops (bw3);
pts1 = [];
pts2 = [];
为i = 1:长度(统计)
.Centroid ceni =统计(我);
disi = pdist2 (ceni [c r]);
[~,印第安纳州]= min (disi);
持有在;
情节([ceni (1) c(印第安纳州)],[ceni (2) r(印第安纳州),的r -,“线宽”2);
如果bw4a (r(印第安纳州),c(印第安纳州))
pts1 = [pts1;c(印第安纳州)r(印第安纳州)];
结束
如果bw4b (r(印第安纳州),c(印第安纳州))
pts2 = [pts2;c(印第安纳州)r(印第安纳州)];
结束
结束
%计算
pts3 = pts2;
pts3 (: 1) = pts3 (: 1) + ts (1);
pts3 (:, 2) = pts3 (:, 2) + ts (2);
图;imshow (bw4ab);
持有在;
情节(pts1 (: 1) pts1 (:, 2),“m *”);
情节(pts3 (: 1) pts3 (:, 2),“罗”);
%有关系
关系= [];
为i = 1:尺寸(pts3, 1)
disi = pdist2 (pts1 pts3(我,:));
[~,印第安纳州]= min (disi);
关系=[关系;我,印第安纳州];
情节([pts3(我,1)pts1(印第安纳州,1)]、[pts3(我,2)pts1(印第安纳州,2)),的r -,“线宽”2);
结束
图;imshow(α);
持有在;
为i = 1:尺寸(关系,1)
情节([pts1(关系(我,2),1)pts2(关系(我,1),1)]、[pts1(关系(我,2),2)pts2(关系(我,1),2)),“m -”,“线宽”2);
结束
现在,我们可以得到点关系
更多的答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。