MATLAB在图像处理中的应用

图像处理概念、算法和MATLAB

注册手持照片

下面描述的典型的现代法国喇叭大约有23英尺长的油管。在开始和结束时,油管是圆锥形的。在中间,油管是圆柱形的。
IMG_4910.jpeg
取决于压在哪个阀门杠杆上,玩家可能会嗡嗡作响地进入一个大约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)
看起来这两个图像通过平移和小旋转而彼此不同。
为了实现我的目标,我需要先将这三张图片对齐。然后我可以裁剪它们并创建我的合成图。
听起来像一个图像配准和空间引用的问题!
计划如下:
  1. 推断一个将图像B与图像a对齐的几何变换。
  2. 推断将图像C与图像a对齐的几何变换。
  3. 利用上述变换,将图像B和C扭曲到与图像A相同的空间参考。
  4. 裁剪所有的三个图像紧紧围绕着我,在中心拿着杆子。
  5. 创建三个图像的组合。
我将使用图像处理工具箱和计算机视觉工具箱中的工具。

将图像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
ans= 3×3单矩阵
1.0211 0.0346 0.0000 -0.0196 1.0139 0.0000 31.3027 47.2352 1.0000
将图像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帐户或创建新帐户。