1.算法運(yùn)行效果圖預(yù)覽
(完整程序運(yùn)行后無(wú)水印)
SIFT:
surf:
kaze:
2.算法運(yùn)行軟件版本
MATLAB2022a
3.部分核心程序
(完整版代碼包含注釋和操作步驟視頻)
img1 = imread('Images\F1.jpg');
img2 = imread('Images\F2.jpg');
figure;
subplot(121);
imshow(img1);
title('原始圖片1');
subplot(122);
imshow(img2);
title('原始圖片2');
SCALE = 4;
Threshold = 0.00004;
[F1,Vp1] =extractFeatures(rgb2gray(img1),detectKAZEFeatures(rgb2gray(img1),'Threshold',Threshold,'NumOctaves',3,'NumScaleLevels',SCALE));
[F2,Vp2] =extractFeatures(rgb2gray(img2),detectKAZEFeatures(rgb2gray(img2),'Threshold',Threshold,'NumOctaves',3,'NumScaleLevels',SCALE));
indexPairs = matchFeatures(F1,F2);
P1????????= Vp1(indexPairs(:,1));?
P2????????= Vp2(indexPairs(:,2));?
matchLoc1?= P1.Location;
matchLoc2?= P2.Location;
img3??????= func_appendimages(img1,img2);
figure;
subplot(211);
colormap('gray');
imagesc(img3);
subplot(212);
colormap('gray');
imagesc(img3);
hold on;
cols1 = size(img1,2);
for i = 1: size(matchLoc1,1)
???if mod(i,1/Ratios)==1
???line([matchLoc1(i,1) matchLoc2(i,1)+cols1], ...
????????[matchLoc1(i,2) matchLoc2(i,2)], 'Color', 'g');
???end
end
title('KAZE匹配效果');
%圖片拼接
imgout =func_pj(matchLoc1,matchLoc2,img1,img2);
figure;
imshow(imgout);
title('拼接結(jié)果');
4.算法理論概述
??????在織物瑕疵的檢測(cè)過(guò)程中寇窑,由于織物圖像信息是由多個(gè)攝像頭采集得到的龄句,因此需要將多個(gè)織物圖片進(jìn)行拼接得到一個(gè)完整的織物圖像棺牧『ぃ織物圖像拼接技術(shù)其首先通過(guò)圖像匹配算法找到不同圖像重疊區(qū)域的特征點(diǎn)坐標(biāo)够颠,然后進(jìn)行圖像的配準(zhǔn)處理并得到一個(gè)全局的織物圖像信息。在完成圖像拼接之后罩句,通過(guò)織物瑕疵檢測(cè)算法檢測(cè)出織物中的瑕疵裳朋,并通過(guò)分類算法將檢測(cè)到的織物瑕疵進(jìn)行分類跺撼。
4.1 SIFT (Scale-Invariant FeatureTransform)
???????SIFT算法是由David Lowe提出的窟感,它能夠在不同尺度和旋轉(zhuǎn)下保持不變性。SIFT的關(guān)鍵點(diǎn)檢測(cè)基于尺度空間理論歉井。
關(guān)鍵點(diǎn)檢測(cè):
尺度空間構(gòu)建: 通過(guò)高斯卷積核對(duì)輸入圖像進(jìn)行卷積柿祈,得到一系列不同尺度的空間圖像。
關(guān)鍵點(diǎn)定位: 在尺度空間中尋找極值點(diǎn)作為關(guān)鍵點(diǎn)候選哩至。
關(guān)鍵點(diǎn)精確定位: 對(duì)候選點(diǎn)進(jìn)行二次擬合躏嚎,以獲得更加精確的位置。
關(guān)鍵點(diǎn)篩選: 根據(jù)對(duì)比度閾值和邊緣響應(yīng)去除不穩(wěn)定的關(guān)鍵點(diǎn)菩貌。
關(guān)鍵點(diǎn)描述:
方向賦值: 計(jì)算關(guān)鍵點(diǎn)鄰域內(nèi)像素梯度的方向直方圖卢佣。
特征描述子: 選取關(guān)鍵點(diǎn)周圍一定范圍內(nèi)的像素點(diǎn),將其梯度方向量化后構(gòu)成描述子箭阶。
4.2 SURF (Speeded Up Robust Features)
SURF是SIFT的一個(gè)快速版本虚茶,旨在提高速度的同時(shí)保持魯棒性。
關(guān)鍵點(diǎn)檢測(cè):
Hessian矩陣近似: 使用Box濾波器近似二階導(dǎo)數(shù)尾膊。
極值檢測(cè): 在尺度空間中尋找Hessian矩陣的極值點(diǎn)媳危。
關(guān)鍵點(diǎn)定位: 類似SIFT,但使用Box濾波器代替高斯濾波器冈敛。
關(guān)鍵點(diǎn)描述:
方向賦值: 使用與SIFT相似的方式待笑。
特征描述子: 在關(guān)鍵點(diǎn)鄰域內(nèi)選取矩形區(qū)域,計(jì)算這些區(qū)域的和作為描述子抓谴。
4.3 KAZE (Key-point Affine-Zernikedescriptors)
KAZE算法是一種更為先進(jìn)的特征檢測(cè)與描述方法暮蹂,它使用非線性擴(kuò)散濾波器來(lái)構(gòu)建尺度空間。
關(guān)鍵點(diǎn)檢測(cè):
尺度空間構(gòu)建: 使用非線性擴(kuò)散方程癌压。
關(guān)鍵點(diǎn)定位: 尋找尺度空間中的極值點(diǎn)仰泻。
關(guān)鍵點(diǎn)精確定位: 類似SIFT,但使用非線性擴(kuò)散方程滩届。
關(guān)鍵點(diǎn)描述:
方向賦值: 使用與SIFT相似的方式集侯。
特征描述子: 采用Zernike多項(xiàng)式描述子。