“在代码的海洋里,有无尽的知识等待你去发现。我就是那艘领航的船,带你乘风破浪,驶向代码的彼岸。
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
图像拼接是将多个具有重叠部分的图像组合成一个大而完整的图像的技术。在众多图像拼接方法中,使用加速鲁棒特征(Speeded Up Robust Features,SURF)检测的技术具有显著优势。 SURF 是一种高效且具有良好鲁棒性的特征检测算法。在图像拼接中,它能够快速准确地提取图像中的特征点,这些特征点对于确定图像之间的重叠区域和匹配关系至关重要。 通过 SURF 检测到的特征点,进行精确的匹配和对齐操作,能够实现不同图像之间的无缝拼接。这一过程还包括对图像的几何变换、色彩调整等,以确保拼接后的图像在视觉上自然流畅,没有明显的拼接痕迹。 使用加速鲁棒特征检测的图像拼接技术在众多领域都有广泛应用,如全景摄影、遥感图像处理、医学图像分析等,为获取更全面、准确的图像信息提供了有力支持。
📚2 运行结果
主函数部分代码:
%% %clear workspace
clear;
clc;
close all;
%read Reference image and convert into single
rgb1= im2single(imread('r1.jpg'));
I1 = rgb2gray(rgb1);
%create mosaic background
sz= size(I1)+300;% Size of the mosaic
h=sz(1);w=sz(2);
%create a world coordinate system
outputView = imref2d([h,w]);
%affine matrix
xtform = eye(3);
% Warp the current image onto the mosaic image
%using 2D affine geometric transformation
mosaic = imwarp(rgb1, affine2d(xtform),'OutputView', outputView);
%read Target image and convert into single
rgb2= im2single(imread('t1.jpg'));
I2 = rgb2gray(rgb2);
%find surf features of reference and target image ,then find new
%affine matrix
%Detect SURFFeatures in the reference image
points = detectSURFFeatures(I1);
%detectSURFFeatures returns information about SURF features detected
%in the 2-D grayscale input image . The detectSURFFeatures function
%implements the Speeded-Up Robust Features (SURF) algorithm
%to find blob features
%Extract feature vectors, also known as descriptors, and their
%corresponding locations
[featuresPrev, pointsPrev] = extractFeatures(I1,points);
%Detect SURFFeatures in the target image
points = detectSURFFeatures(I2);
%Extract feature vectors and their corresponding locations
[features, points] = extractFeatures(I2,points);
% Match features computed from the refernce and the target images
indexPairs = matchFeatures(features, featuresPrev);
% Find corresponding locations in the refernce and the target images
matchedPoints = points(indexPairs(:, 1), :);
matchedPointsPrev = pointsPrev(indexPairs(:, 2), :);
%compute a geometric transformation from the corresponding locations
tform=estimateGeometricTransform(matchedPoints,matchedPointsPrev,'affine');
xtform = tform.T;
% Warp the current image onto the mosaic image
mosaicnew = imwarp(rgb2, affine2d(xtform), 'OutputView', outputView);
%create a object to overlay one image over another
halphablender = vision.AlphaBlender('Operation', 'Binary mask', 'MaskSource', 'Input port');
% Creat a mask which specifies the region of the target image.
% BY Applying geometric transformation to image
mask= imwarp(ones(size(I2)), affine2d(xtform), 'OutputView', outputView)>=1;
%overlays one image over another
mosaicfinal = step(halphablender, mosaic,mosaicnew, mask);
%show results
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]韦柳梅,罗雪梅,康健.改进YOLOv8的航拍图像小目标检测算法[J/OL].计算机工程与科学:1-13[2024-08-30].http://kns.cnki.net/kcms/detail/43.1258.TP.20240829.1619.002.html.
[2]吕伏,郑禹,齐光尧,等.极坐标编解码的轻量化SAR图像舰船斜框检测算法[J/OL].计算机科学与探索:1-20[2024-08-30].http://kns.cnki.net/kcms/detail/11.5602.TP.20240829.1158.013.html.