區(qū)域和輪廓只包含對分割結(jié)果的原始描述,在實際應(yīng)用中我們還需要從區(qū)域或輪廓中確定一個或多個特征量。這些確定的特征量被稱為特征。
確定特征的過程被稱為圖像特征提取。??
一、概述
1.圖像特征的分類
(1)圖像的視覺特征
邊緣、輪廓、形狀、紋理和區(qū)域等。
(2)圖像的統(tǒng)計特征
灰度直方圖特征、矩特征,其中矩特征包括均值、方差、峰度及熵特征等。
(3)圖像變換系數(shù)特征
傅立葉變換、離散余弦變換、小波變換等。
(4)圖像代數(shù)特征
矩陣的奇異值
2.? 特征提取與特征選擇
(1)特征選擇
從一組特征中挑選出一些最有效的特征,以達到降低特征空間維數(shù)的目的。
(2)特征提取
對原始特征進行變換得到的這些有利于分類、更本質(zhì)、更少的新特征的過程。
二、興趣點提取
1.什么是興趣點
興趣點是指圖像信號在二維空間上發(fā)生變化的區(qū)域,通常情況下包括拐角點、交點和紋理等顯著變化區(qū)域。
2.興趣點標定的方法
(1)基于輪廓線的方法
輪廓線具有曲率變化的特征,可歸類為結(jié)點,端點等類型。如在圖像中尋找脊和谷的方法對興趣點進行標定。?
(2)基于圖像強度的方法
信號的自相關(guān)函數(shù)檢測特征點,灰度值的差大于某個門限時即認為該點是興趣點。?
(3)基于參數(shù)模型的方法
使用高斯卷積模型對拐角進行識別,? 使用最小化方法,使得模板與觀測信號最佳匹配。
3.興趣點的表達方法
(1)尺度不變特征變換(Scale-invariant feature transform,SIFT)
使用了128維的向量對興趣點特征進行表達,該向量通過Lowe建立的碼表形成。該方法可以做到縮放不變、亮度不變的特性。?
(2)可控濾波器和梯度不變方法
使用高斯濾波器的方法求圖像的梯度,具有長度為13的維數(shù)。?
(3)區(qū)域矩不變特性
通過改變統(tǒng)計矩的組合,適用于圖像的多種不變特性的應(yīng)用。
(4)頻域分析法
通過Gabor濾波器來捕捉圖像在頻率和方向上的細微變化,描述的維度很高。
三、Harris角點算法
1.概述
當滑動窗口處于一個興趣點發(fā)生的地方,無論從哪個方向移動該窗口,都會發(fā)生圖像強度(灰度值)的劇烈變化。
基于圖像灰度的方法通過計算點的曲率及梯度來檢測角點,避免了第一類方法存在的缺陷,此類方法主要有Moravec算子、Forstner算子、Harris算子、SUSAN算子等。
2.原理
圖像窗口滑動后灰度值變化計算:
小距離窗口滑動近似計算:
首先采用Sobel算子計算出梯度Ix和Iy,再逐點計算其乘積,最后使用高斯窗對該乘積圖像的所有像素點進行卷積即可。
img=imread('F:lena.png');imshow(img);img = rgb2gray(img); ? ?
? ?%轉(zhuǎn)換為灰度圖像img =double(img);[m n]=size(img); ? ? ? ? ? ?
? ?%獲取圖像尺寸tmp=zeros(m+2,n+2); ?
? ? ?%創(chuàng)建空矩陣tmptmp(2:m+1,2:n+1)=img; ?
?%將img賦值給tmp矩陣Ix=zeros(m+2,n+2);Iy=zeros(m+2,n+2);E=zeros(m+2,n+2); ? ? ? ?
? ? %創(chuàng)建空矩陣Ix,Iy,EIx(:,2:n)=tmp(:,3:n+1)-tmp(:,1:n-1);
? ?%求橫向梯度Iy(2:m,:)=tmp(3:m+1,:)-tmp(1:m-1,:); %求縱向梯度 Ix2=Ix(2:m+1,2:n+1).^2; ? ? ? ? ? ?
? ? ? %求梯度方向乘積Iy2=Iy(2:m+1,2:n+1).^2;Ixy=Ix(2:m+1,2:n+1).*Iy(2:m+1,2:n+1);
? h=fspecial(‘gaussian’,[7 7],2); ? ?
? ? %使用高斯核進行加權(quán)Ix2=filter2(h,Ix2);Iy2=filter2(h,Iy2);Ixy=filter2(h,Ixy);Rmax=0;R=zeros(m,n);for i=1:m ?
?for j=1:n ? ?
? ?M=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)]; ? ?
? ?R(i,j)=det(M)-0.06*(trace(M))^2; ? ? ? ? ?
? ?%計算角點量 ? ?
? ?if R(i,j)>Rmax ? ? ?
? ? ?Rmax=R(i,j); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
%閾值判斷 ? ?
? ?end ?
?endend ?
? ?re=zeros(m+2,n+2);tmp(2:m+1,2:n+1)=R;img_re=zeros(m+2,n+2);img_re(2:m+1,2:n+1)=img;for i=2:m+1 ?
?for j=2:n+1 ? ?
? ?if tmp(i,j)>0.02*Rmax &&... ? ?
? ? ? tmp(i,j)>tmp(i-1,j-1) && tmp(i,j)>tmp(i-1,j) && tmp(i,j)>tmp(i-1,j+1) &&... ? ? ? ?
? tmp(i,j)>tmp(i,j-1) && tmp(i,j)>tmp(i,j+1) &&... ?
? ? ? ? tmp(i,j)>tmp(i+1,j-1) && tmp(i,j)>tmp(i+1,j) && tmp(i,j)>tmp(i+1,j+1) ? ? ? ? ? ? ? ?
img_re(i,j)=255; ? ? ? ? ? ? ? ? ? ? ? ? ?
? %標記角點 ? ? ? ? ?
? ? ? ? ? ?end ? ?
?endendimg_re=mat2gray(img_re(2:m+1,2:n+1));figure,imshow(img_re); ?
? %恢復并顯示圖像
四、直線提取
1.Hough變換原理
在圖像空間XY里,設(shè)所有過點(x,y)的直線都滿足方程:
式中,p為直線的斜率,q為直線的截距。也可以寫成:
式中表示參數(shù)空間PQ中過點(p,q)的一條直線。圖像空間到參數(shù)空間之間的轉(zhuǎn)換可以用圖表示:
2.直線提取原理
開始時,置數(shù)組A為零,然后對每一個圖像空間中的給定點,讓θ取遍區(qū)間上所有可能的值,并根據(jù)直線公式算出對應(yīng)的ρ,再根據(jù)和的值(設(shè)都已經(jīng)取整)對A累加:
對圖像遍歷后,上式的值就是在點(θ,ρ)處共線點的個數(shù)。值(θ,ρ)也給出了直線方程的參數(shù),這樣就得到了點所在的線。?
3.MATLAB編程實現(xiàn)
img = imread(rg.bmp');figure(1),subplot(1,2,1);imshow(img); ?title('原始圖像');img=rgb2gray(img); ? ? ?
% 灰度圖像subplot(1,2,2);imshow(img); ?title('灰度圖像'); thresh=[0.01,0.10]; ? ?
? ? %敏感度閾值sigma=3; ? ? ? ? ?
? ? ? ? ? ? ? %定義高斯參數(shù) f = edge(double(img),'canny',thresh,sigma); ?%邊緣檢測figure(2),imshow(f); ?title('canny 邊緣檢測'); % 檢測函數(shù);[H, theta, rho]= hough(f,'Theta', 20:0.1:75); ?
? %0-1% H->累計數(shù)組 , thetaH:對應(yīng)的θ,實際上H的大小就是Rho×Theta% Rho:H對應(yīng)的ρ peak=houghpeaks(H,1); ? ? ? ? ? ? ?
? ? ?%峰值提取hold on ?%保留當前的圖和特定的坐標軸屬性,以便后續(xù)的繪圖命令添加到現(xiàn)有的圖表。lines=houghlines(f,theta,rho,peak); ?
%得到線段信息 figure(3);imshow(f,[]);title('霍夫變換檢測結(jié)果');hold on ?;for k=1:length(lines) ? ? ? ?
? xy=[lines(k).point1;lines(k).point2]; ? ? ? ? ?
? ? ? plot(xy(:,1),xy(:,2),'LineWidth',4,'Color',[.6 .6 .6]); ?end ?
?
編輯:黃飛
?
評論
查看更多