史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

注册手持照片

典型的现代法国*角,如下图所示,约23英尺的油管。开始和结束时,油管是锥形。在中间,油管是圆柱形的。
IMG_4910.jpeg
这取决于阀杠杆压,球员可能会嗡嗡叫成单管,长9英尺到17英尺(大约)。对于一个个人项目,我想创建一个视觉说明这些不同的长度。我使用一个扩展杆和得到一些帮助几个图片。我的助手使用手持电话。
一个= imread (“A.jpg”);
B = imread (“B.jpg”);
C = imread (“C.jpg”);
tiledlayout (2, 2)
nexttile
imshow (,“插值”,双线性的)
标题(“图像(F角的长度,12英尺))
nexttile
imshow (B,“插值”,双线性的)
标题(的形象B(名扬四海的角的长度,9英尺))
nexttile
imshow (C,“插值”,双线性的)
标题(的形象C (B角的长度,17英尺)的)
我想用这些图片做一个组合,让你在视觉上比较三杆长度。问题是,这三个图片不一致,这使得建立一个准确的复合具有挑战性。
让我用 imshowpair 为了说明我的意思,使用图像A和B。
clf
imshowpair (A, B)
看起来这两个图像不同于彼此的平移和旋转。
为了实现我的目标,然后,我需要这三个图片先相互对齐。然后我作物,可以创建复合。
听起来像一个图像配准和空间引用问题!
计划是这样的:
  1. 推断出一个几何变换,将图像B图像。
  2. 推断出一个图像的几何变换,图像对齐C。
  3. 使用上面的转换发现,经图像B和C一样的空间参考图像。
  4. 农作物周围的所有三个图像密切保持杆的中心。
  5. 创建一个复合的三个图片。
我将使用图像处理工具箱中的工具和计算机视觉的工具箱。

注册图像B图像

将图像转换为灰度的注册过程。
Ag) = rgb2gray(一个);
Bg = rgb2gray (B);
使用上网功能检测(从计算机视觉的工具箱)在两个图像。
%检测冲浪功能
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与形象。
tform_B_A = estimateGeometricTransform (B_matched_points A_matched_points,“射影”);
tform_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图像答:尤其要注意使用 OutputView 选择 imwarp ;这是用于计算图像扭曲的结果完全相同的矩形空间被一个形象。
A_ref = imref2d(大小(Ag));
B_reg = imwarp (B tform_B_A“OutputView”,A_ref);
视觉检查结果。
imshowpair (B_reg,“插值”,双线性的)

注册图像C图像使用相同的过程

Cg = rgb2gray (C);
C_points = detectSURFFeatures (Cg);
[C_features, C_valid_points] = extractFeatures (Cg C_points);
index_pairs_C_A = matchFeatures (A_features C_features);
A_matched_points = A_valid_points (index_pairs_C_A (: 1));
C_matched_points = C_valid_points (index_pairs_C_A (:, 2));
tform_C_A = estimateGeometricTransform (C_matched_points A_matched_points,“射影”);
C_reg = imwarp (C tform_C_A“OutputView”,A_ref);
imshowpair (C_reg,“插值”,双线性的)

作物图像常见的矩形

现在图像A、B和C都注册的空间参考图像,它们三个可以裁剪使用相同的矩形在同一位置。
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,“插值”,双线性的)
我对此很惊讶,这仪器,我能在我的腿上真的可以管右边的极图。
*现代仪器不是法国血统,所以 法国号 是一个误称,严格地说。许多玩家参考仅仅作为一种工具 角, 这是推荐的国际社会角。在美国,然而,大多数人不是将管弦乐团的乐手们感到困惑 ,所以我使用 法国号 在这里。
|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。