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