一、投影
水平投影有什么作用呢?
可以起到一個定位的作用,比如說,我們想要定位車牌號。我們把圖像處理之后,用垂直投影,可以很快的對其進行定位以即分割
水平投影的實現(xiàn)步驟
圖像二值化,物體為黑,背景為白。
循環(huán)各行,依次判斷每一列的像素是否為黑,統(tǒng)計所有黑像素的個數(shù)。設(shè)該行共有M個黑像素,則把該行從第一列到第M列設(shè)置為黑
垂直投影的實現(xiàn)步驟
圖像二值化,物體為黑,背景為白。
循環(huán)各列,依次判斷每一行的像素是否為黑,統(tǒng)計所有黑像素的個數(shù)。設(shè)該列共有M個黑像素,則把該列從第一行到第M行設(shè)置為黑
效果圖如下
水平投影效果如下
二、紋理分析
什么是紋理呢?
紋理就是指在圖像中反復出現(xiàn)的局部模式和他們的排列規(guī)則
紋理特征反應了物體本身的屬性,有助于將兩種不同的物理分開來
通過對圖像的紋理分析獲得關(guān)于景物紋理特征和結(jié)構(gòu)的定景分析描述和解釋。這就是圖像紋理分析的任務(wù)。
紋理是圖像的像素灰度級或者顏色的某種變化,反復出現(xiàn)紋理基元和它的排列規(guī)則。而且這種變化是空間排列的
紋理是由紋理級元組測而成的
那什么是紋理分析呢?
紋理分析是指通過圖像處理技術(shù)抽取出紋理特征,獲得紋理的定量或者定性描述的處理過程,獲得紋理的定量或者定性描述的處理過程,它首先從像素觸發(fā),檢測出紋理基元,找出紋理基元排列的信息,建立紋理基元的模型,通過紋理分析獲取紋理基元的排列信息及分布信息
紋理分析的基礎(chǔ)方法
統(tǒng)計方法
1. 空間域:基于統(tǒng)計圖像像素灰度級的分布狀況,利用直方圖
2. 頻域:通過傅里葉變換將圖像變換到頻率域然后抽取相應的象征量
結(jié)構(gòu)方法:用于印刷或者版畫樣等一類紋理基元及其排列比較規(guī)則的圖像
直方圖統(tǒng)計特征分析法
大體步驟如下
1. 對于一副圖像,選擇合適的領(lǐng)域大小
2. 對每個像素,計算出其領(lǐng)域中的灰度直方圖
3. 比較求出的直方圖與已知的各種紋理基元的直方圖之間的相似性。
4. 若相似,說明存在已知的紋理基元
如何判斷直方圖的相似性呢?
均值方差法
求出兩個圖像直方圖的均值和方差,如果兩幅圖像的均值和方差相差均在閾值之內(nèi),則說明兩個直方圖是相似的。
直方圖的均值:所有像素值相加除以像素個數(shù)
直方圖的方差:每一個顏色減去均值的平方,再乘以顏色的個數(shù)再除以總個數(shù)。
該算法實現(xiàn)起來非常簡單
def Texture_1(img1,img2):
def getStatic(img):
static=np.zeros(shape=256,dtype=int)
for y in range(0,len(img)):
for x in range(0,len(img[y])):
c=img[y,x,0]
static[c]=static[c]+1
return static
# 先統(tǒng)計直方圖
static1=getStatic(img1)
static2=getStatic(img2)
s1=0
s2=0
#再計算直方圖的平均灰度
for i in range(0,256):
s1=s1+static1[i]*i
s2=s2=static2[i]*i
avg1=s1/(len(img1)*len(img1[0]))
avg2 = s2 / (len(img2) * len(img2[0]))
#再計算方差
for c in range(0,256):
t1=(c-avg1)*static1[c]
t2=(c-avg2)*static2[c]
t1=t1/(len(img1)*len(img1[0]))
t2=t2/(len(img2)*len(img2[0]))
return np.abs(t1-t2)
Kolmogorov-Smirnov檢測法
對于兩幅圖像,分別求出其累計直方圖,然后取其累計直方圖差值的最大值
H(z)=int_{0}^{Z}h(x)dxH(z)=∫0Zh(x)dx
KS=max|H_1(z)-H_2(Z)|KS=max∣H1(z)?H2(Z)∣
然后再求出直方圖之間差值的的和值,為SD
SD=sum h_1(z)-h_2(z)SD=∑h1(z)?h2(z)
如果|KS-SD|∣KS?SD∣在閾值之內(nèi),則相似
Python
def Texture_2(img1,img2):
#下面是用來求一副圖像的直方圖
def getStatic(img):
static=np.zeros(shape=256,dtype=int)
for y in range(0,len(img)):
for x in range(0,len(img[y])):
c=img[y,x,0]
static[c]=static[c]+1
return static
#下面的函數(shù)是用來求一副圖像的累計直方圖
def getStatic1(img):
static=np.zeros(shape=256,dtype=int)
for y in range(0,len(img)):
for x in range(0,len(img[y])):
c=img[y,x,0]
static[c]=static[c]+1
if c》0:
static[c]=static[c]+static[c-1]
return static
static1=getStatic(img1)
static2=getStatic(img2)
# 用來參數(shù)KS
KS=np.max(static1-static2)
# 用來求參數(shù)SD
SD=np.sum((getStatic(img1)-getStatic(img2)),axis=0)
return np.abs(KS-SD)
邊緣方向直方圖分析法
灰度級直方圖不能反應圖像的二維灰度變化,圖像邊緣包含有大量的二維信息,取沿著邊緣走向的像素的領(lǐng)域,分析其直方圖,若在直方圖上的某一個灰度范圍內(nèi)有尖峰,可以說明在這個范圍內(nèi),紋理具有方向性。因此,單純的分析邊緣方向的直方圖可以得到一些紋理信息
圖像自相關(guān)函數(shù)分析法
P(x,y)=frac{sum_{i=0}sum_{j=0}f(i,j)f(i+x,j+y)}{sum_{i=0}sum_{j=0} f(i,j)} d=(x^2+y^2)^{frac{1}{2}}P(x,y)=∑i=0∑j=0f(i,j)∑i=0∑j=0f(i,j)f(i+x,j+y)d=(x2+y2)21利用p(x,y)隨著x,y大小而變化的規(guī)律可以找到描述圖像的紋理特征。
自相關(guān)函數(shù)隨著x、y大小而變化,與圖像紋理粗細的變化有者對應的關(guān)系,如果紋理比較粗,則P(x,y)隨著d增加而下降速度較慢,如果紋理比較細,則隨著d增加而下降速度較快
灰度共生矩陣特征分析法
因為灰度級直方圖分析法無法反應出像素之間灰度級空間相關(guān)性的規(guī)律。所以是有一定缺陷的,而灰度共生矩陣特征分析法,很好點的解決了這個問題。
相鄰某一間隔的兩個像素,他們之間要么具有相同的灰度級,要么具有不相同的灰度級,如果能找到這樣兩個像素的聯(lián)合分布的統(tǒng)計形式,對于圖像的紋理分析很有意義
灰度-梯度共生矩陣分析法
將其灰度進行正規(guī)化處理
利用梯度算子,可以得到梯度圖像
經(jīng)過正規(guī)化處理,可以得到兩個正規(guī)化矩陣:灰度矩陣、梯度矩陣
正規(guī)化處理
每個像素乘以它的灰度值的個數(shù),然后除以最大值
編輯:lyn
-
投影
+關(guān)注
關(guān)注
0文章
137瀏覽量
24625 -
紋理
+關(guān)注
關(guān)注
0文章
7瀏覽量
6714 -
圖像測量
+關(guān)注
關(guān)注
0文章
16瀏覽量
8459
原文標題:圖像的測量之投影與紋理
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論