注册手持照片
下面描述的典型的现代法国喇叭大约有23英尺长的油管。在开始和结束时,油管是圆锥形的。在中间,油管是圆柱形的。
取决于压在哪个阀门杠杆上,玩家可能会嗡嗡作响地进入一个大约9英尺到17英尺长的管子。在一个个人项目中,我想创建一个不同长度的视觉图。我用了一根延伸杆,得到了一些帮助,拍了几张照片。我的助手用的是手持电话。
A=imread(“A.jpg”);
B=imread(“B.jpg”);
C=imread(“C.jpg”);
tiledlayout (2, 2)
奈克斯提尔
imshow(A,“插值”,“双线性”)
头衔('图像A(F喇叭的长度,12英尺)')
奈克斯提尔
imshow(B,“插值”,“双线性”)
头衔('图像B(B扁喇叭的长度,9英尺)')
奈克斯提尔
imshow(C,“插值”,“双线性”)
头衔('图像C(B喇叭的长度,17英尺)')
我想用这些图片做一个合成图,让你直观地比较三个极点的长度。问题是,这三张图片并没有相互对齐,这使得创建一个精确的合成具有挑战性。
让我用
imshowpair
为了说明我的意思,使用图像A和B。
clf
imshowpair (A, B)
看起来这两个图像通过平移和小旋转而彼此不同。
为了实现我的目标,我需要先将这三张图片对齐。然后我可以裁剪它们并创建我的合成图。
听起来像一个图像配准和空间引用的问题!
计划如下:
- 推断一个将图像B与图像a对齐的几何变换。
- 推断将图像C与图像a对齐的几何变换。
- 利用上述变换,将图像B和C扭曲到与图像A相同的空间参考。
- 裁剪所有的三个图像紧紧围绕着我,在中心拿着杆子。
- 创建三个图像的组合。
我将使用图像处理工具箱和计算机视觉工具箱中的工具。
将图像B注册到图像A
将图像转换为灰度以进行注册过程。
Ag=RGB2灰色(A);
Bg=rgb2灰色(B);
在两幅图像中使用冲浪特征检测(来自计算机视觉工具箱)。
%检测SURF特征
A_points = detectSURFFeatures (Ag);
B_points = detectSURFFeatures (Bg);
从检测到的特征点提取特征信息。
[A_features, A_valid_points] = extractFeatures (Ag)、A_points);
[B_features, B_valid_points] = extractFeatures (Bg B_points);
将两幅图像中的特征点进行匹配。
index_pairs_B_A = matchFeatures (A_features B_features);
A_matched_points = A_valid_points (index_pairs_B_A (: 1));
B_matched_points = B_valid_points (index_pairs_B_A (:, 2));
推断一个投影几何变换,将图像B与图像a对齐。
tform_B_A=估计几何变换(B_匹配点,A_匹配点,“投射的”);
T格式B_A.T
将图像B与图像A对齐。特别注意
OutputView
选择
伊姆瓦普
;这用于在与图像A占用的空间矩形完全相同的位置计算图像扭曲结果。
A_ref=imref2d(尺寸(Ag));
B_reg = imwarp(B, tform_B_A,“OutputView”, A_ref);
目视检查结果。
图形
imshowpair(A、B_注册,“插值”,“双线性”)
用同样的程序将图像C寄存器到图像A
Cg=RGB2灰色(C);
C_points = detectSURFFeatures (Cg);
[C_features, C_valid_points] = extractFeatures (Cg C_points);
索引_对_C_A=匹配特征(A_特征,C_特征);
A_匹配_点=A_有效_点(索引_对_C_点A(:,1));
C_匹配_点=C_有效_点(索引_对_C_A(:,2));
tform_C_A = estimateGeometricTransform (C_matched_points A_matched_points,“投射的”);
C_reg=imwarp(C,t形式C_A,“OutputView”, A_ref);
imshowpair (C_reg,“插值”,“双线性”)
将图像裁剪为公共矩形
现在图像A、B和C都已注册到图像A的空间参考,可以使用相同位置的相同矩形对它们进行裁剪。
R = [1100 450 600 1600];
A_c = imcrop(右);
B_reg_c = imcrop (B_reg, r);
C_reg_c = imcrop (C_reg, r);
制作一个平铺复合材料
最后,我将使用
imtile
生成可保存为JPEG文件的平铺复合图像。
ABC = imtile ({B_reg_c、A_c C_reg_c},...
“BorderSize”, 50岁,...
“写成BackgroundColor”,“白色”);
imshow(ABC,“插值”,“双线性”)
让我惊讶的是,我可以把这个仪器放在我的膝盖上,它可以是一个管子,就像右图中的杆子一样长。
*现代乐器并非起源于法国,因此
法国号
严格地说,是用词不当。许多演奏者把这种乐器简称为a
喇叭
这是国际号角协会的建议。然而,在美国,大多数不是管弦乐音乐家的人都会对这个词感到困惑
角
,所以我用
法国号
在这里。
|
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。