最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

【圖像壓縮】基于主成分分析PCA算法實(shí)現(xiàn)圖像壓縮matlab源碼

2021-08-22 01:19 作者:Matlab工程師  | 我要投稿

基于幾何特征的模板匹配通過計(jì)算模板圖像與目標(biāo)圖像特征信息,來判斷目標(biāo)圖像中是否有與模板圖像相近或相同的圖像。
模板匹配的大致流程:
首先,需要制作一個(gè)模板,并以模板圖像以一定角度旋轉(zhuǎn),制作0°–360°各個(gè)方向的模板。模板圖像 T 從目標(biāo)圖像的原點(diǎn)處開始每次移動(dòng)一個(gè)像素,直到匹配分?jǐn)?shù)達(dá)到要求找到目標(biāo)物體。

在這里插入圖片描述

基于邊緣模板的創(chuàng)建:

我們首先從模板圖像的邊緣創(chuàng)建一個(gè)數(shù)據(jù)集或模板模型,該數(shù)據(jù)集或模板模型將用于目標(biāo)圖像中去搜索與模板圖像相近或相同的圖像。邊緣檢測的方法與canny邊緣檢測的方法類似。

1利用sobel算子尋找圖像的梯度和方向

Sobel算子卷積因子如圖所示

在這里插入圖片描述


sobel算子在橫向和縱向兩個(gè)方向可以與圖像作平面卷積。對于模板圖像某點(diǎn)(x,y)可以得出兩個(gè)方向的梯度向量Gx,Gy;

我們計(jì)算該像素點(diǎn)幅值梯度:

在這里插入圖片描述

計(jì)算梯度方向:

在這里插入圖片描述

2非最大值抑制原理提取邊緣信息

sobel算子檢測出來的邊緣太粗了,我們需要抑制那些梯度不夠大的像素點(diǎn),只保留最大的梯度,從而達(dá)到瘦邊的目的。這些梯度不夠大的像素點(diǎn)很可能是某一條邊緣的過渡點(diǎn)。按照高數(shù)的極大值的定義,即對點(diǎn)(x0,y0)的某個(gè)鄰域內(nèi)所有(x,y)都有f(x,y)≤(f(x0,y0),則稱f在(x0,y0)具有一個(gè)極大值,極大值為f(x0,y0)。簡單方案是判斷一個(gè)像素點(diǎn)的8鄰域與中心像素誰更大,但這很容易篩選出噪聲,因此我們需要用梯度和梯度方向來輔助確定。
如下圖所示,中心像素C的梯度方向是藍(lán)色直線dTmp1,dTmp2是梯度直線上與鄰域交點(diǎn)的值,那么只需比較中心點(diǎn)C與dTmp1和dTmp2的大小即可。由于這兩個(gè)點(diǎn)的像素不知道,假設(shè)像素變化是連續(xù)的,就可以用g1、g2和g3、g4進(jìn)行線性插值估計(jì)。設(shè)g1的幅值M(g1),g2的幅值M(g2),則M(dtmp1)=w*M(g2)+(1-w)*M(g1) ,其w=distance(dtmp1,g2)/distance(g1,g2) 。也就是利用g1和g2到dTmp1的距離作為權(quán)重,來估計(jì)dTmp1的值。經(jīng)過非最大值抑制可以濾除大部分非邊緣點(diǎn)。

在這里插入圖片描述

3用雙閾值算法檢測和連接邊緣

經(jīng)過非極大值抑制之后的邊緣點(diǎn)中,梯度值超過T1的稱為強(qiáng)邊緣,梯度值小于T1大于T2的稱為弱邊緣,梯度小于T2的不是邊緣。可以肯定的是,強(qiáng)邊緣必然是邊緣點(diǎn),因此必須將T1設(shè)置的足夠高,以要求像素點(diǎn)的梯度值足夠大(變化足夠劇烈),而弱邊緣可能是邊緣,也可能是噪聲,如何判斷呢?當(dāng)弱邊緣的周圍8鄰域有強(qiáng)邊緣點(diǎn)存在時(shí),就將該弱邊緣點(diǎn)變成強(qiáng)邊緣點(diǎn),以此來實(shí)現(xiàn)對強(qiáng)邊緣的補(bǔ)充。

在這里插入圖片描述


由此我們找到了模板圖像邊緣點(diǎn)的梯度信息Gx,Gy,θ,和位置信息(x,y)在與原圖像匹配之前我們的模板數(shù)據(jù)集用如下方法表示:
其中pi為相對于模板重心的相對坐標(biāo)。pi=(xi,Yi)T,i=1,2,3,4…n構(gòu)成,對應(yīng)于每個(gè)點(diǎn)有一個(gè)梯度方向向量di=(ti,ui)T

模板匹配:

1計(jì)算被搜索圖像

計(jì)算被搜索圖像(目標(biāo)圖像)邊緣點(diǎn)梯度信息,邊緣點(diǎn)梯度信息與位置信息的計(jì)算同模板制作的過程。

2金字塔下采樣

金字塔下采樣后,需得到多級金字塔圖像的邊緣點(diǎn)梯度信息,邊緣點(diǎn)梯度信息與位置信息的計(jì)算同模板制作的過程。其中金字塔用來對算法進(jìn)行加速。

3匹配過程:

先在頂層金字塔進(jìn)行快速搜索匹配得到一個(gè)匹配位置,然后在下一層金字塔進(jìn)行匹配時(shí)候就能在該區(qū)域的ROI內(nèi)進(jìn)行搜索,以此類推,直到最底層。通過金字塔可以大大加快匹配速度。
搜索目標(biāo)圖像之前,我們設(shè)被搜索圖像(目標(biāo)圖像)點(diǎn)集(xi,yi)T, i=1,2,3,4…n,對應(yīng)的每個(gè)點(diǎn)的方向向量為e(x,y)=(vx,y,wx,y)T
由圖像金字塔算法得到被搜索圖像底層的ROI區(qū)域后,模板圖像以重心點(diǎn)為原點(diǎn)在ROI區(qū)域進(jìn)行遍歷搜索。
搜索過程按如下公式進(jìn)行:

在這里插入圖片描述


(上式di’相當(dāng)于上文提到的di=模板的方向向量,pi’相當(dāng)于上文提到的pi’=模板的邊緣點(diǎn))
計(jì)算的是模板與子圖像對應(yīng)邊緣點(diǎn)的梯度向量點(diǎn)積平均值。當(dāng)一對對應(yīng)邊緣點(diǎn)梯度方向相同是,點(diǎn)積取得最大值,梯度方向正交時(shí),點(diǎn)積為零,梯度方向相反時(shí),點(diǎn)積取得負(fù)的最大值。計(jì)算得到的相似度量值不方便用于判斷子圖像是否為符合要求的結(jié)果,即很難確定一個(gè)閾值來篩選所需要的結(jié)果。因而對上式進(jìn)行歸一化處理:

在這里插入圖片描述


(上式di’相當(dāng)于上文提到的di=模板的方向向量,pi’相當(dāng)于上文提到的pi’=模板的邊緣點(diǎn))
上式描述的是,轉(zhuǎn)換后的模板與被搜索圖像點(diǎn)(x, y)處子圖像所有對應(yīng)點(diǎn)的方向向量點(diǎn)積和的歸一化。由于對方向向量進(jìn)行了歸一化處理,相似度量對任意光照變化具有不變性,不管是模板、還是搜索圖像中有噪聲,由于噪聲導(dǎo)致的方向向量是隨機(jī)的,平均起來對以上求和公式?jīng)]有貢獻(xiàn)值,因而具有很好的抗干擾性。上式的取值范圍為[?1, 1],返回值為1時(shí),表示模板和搜索子圖像與完全匹配。

完整代碼或者代寫添加QQ1575304183

一、PCA簡介

主成分分析(Principal Component Analysis,PCA), 是一種統(tǒng)計(jì)方法。通過正交變換將一組可能存在相關(guān)性的變量轉(zhuǎn)換為一組線性不相關(guān)的變量,轉(zhuǎn)換后的這組變量叫主成分。

二、PCA提出的背景

在許多領(lǐng)域的研究與應(yīng)用中,往往需要對反映事物的多個(gè)變量進(jìn)行大量的觀測,收集大量數(shù)據(jù)以便進(jìn)行分析尋找規(guī)律。多變量大樣本無疑會(huì)為研究和應(yīng)用提供了豐富的信息,但也在一定程度上增加了數(shù)據(jù)采集的工作量,更重要的是在多數(shù)情況下,許多變量之間可能存在相關(guān)性,從而增加了問題分析的復(fù)雜性,同時(shí)對分析帶來不便。如果分別對每個(gè)指標(biāo)進(jìn)行分析,分析往往是孤立的,而不是綜合的。盲目減少指標(biāo)會(huì)損失很多信息,容易產(chǎn)生錯(cuò)誤的結(jié)論。

因此需要找到一個(gè)合理的方法,在減少需要分析的指標(biāo)同時(shí),盡量減少原指標(biāo)包含信息的損失,以達(dá)到對所收集數(shù)據(jù)進(jìn)行全面分析的目的。由于各變量間存在一定的相關(guān)關(guān)系,因此有可能用較少的綜合指標(biāo)分別綜合存在于各變量中的各類信息。主成分分析與因子分析就屬于這類降維的方法。

三、PCA的推導(dǎo)

主成分的意思就是數(shù)據(jù)的主要成分,對于給定的一些數(shù)據(jù),我們一般來說關(guān)心的是數(shù)據(jù)中變化的部分,變化的越多,我們得到的信息也就越多,而數(shù)據(jù)中不變的地方,我們能收集到的信息非常有限,所以,數(shù)據(jù)中變化較多的部分就構(gòu)成了數(shù)據(jù)的主成分。

為了說明什么是數(shù)據(jù)的主成分,先從數(shù)據(jù)降維說起。數(shù)據(jù)降維是怎么回事兒?假設(shè)三維空間中有一系列點(diǎn),這些點(diǎn)分布在一個(gè)過原點(diǎn)的斜面上,如果你用自然坐標(biāo)系x,y,z這三個(gè)軸來表示這組數(shù)據(jù)的話,需要使用三個(gè)維度,而事實(shí)上,這些點(diǎn)的分布僅僅是在一個(gè)二維的平面上,那么,問題出在哪里?如果你再仔細(xì)想想,能不能把x,y,z坐標(biāo)系旋轉(zhuǎn)一下,使數(shù)據(jù)所在平面與x,y平面重合?這就對了!如果把旋轉(zhuǎn)后的坐標(biāo)系記為x’,y’,z’,那么這組數(shù)據(jù)的表示只用x’和y’兩個(gè)維度表示即可!當(dāng)然了,如果想恢復(fù)原來的表示方式,那就得把這兩個(gè)坐標(biāo)之間的變換矩陣存下來。這樣就能把數(shù)據(jù)維度降下來了!但是,我們要看到這個(gè)過程的本質(zhì),如果把這些數(shù)據(jù)按行或者按列排成一個(gè)矩陣,那么這個(gè)矩陣的秩就是2!這些數(shù)據(jù)之間是有相關(guān)性的,這些數(shù)據(jù)構(gòu)成的過原點(diǎn)的向量的最大線性無關(guān)組包含2個(gè)向量,這就是為什么一開始就假設(shè)平面過原點(diǎn)的原因!那么如果平面不過原點(diǎn)呢?這就是數(shù)據(jù)中心化的緣故!將坐標(biāo)原點(diǎn)平移到數(shù)據(jù)中心,這樣原本不相關(guān)的數(shù)據(jù)在這個(gè)新坐標(biāo)系中就有相關(guān)性了!有趣的是,三點(diǎn)一定共面,也就是說三維空間中任意三點(diǎn)中心化后都是線性相關(guān)的,一般來講n維空間中的n個(gè)點(diǎn)一定能在一個(gè)n-1維子空間中分析!

上一段文字中,認(rèn)為把數(shù)據(jù)降維后并沒有丟棄任何東西,因?yàn)檫@些數(shù)據(jù)在平面以外的第三個(gè)維度的分量都為0?,F(xiàn)在,假設(shè)這些數(shù)據(jù)在z’軸有一個(gè)很小的抖動(dòng),那么我們?nèi)匀挥蒙鲜龅亩S表示這些數(shù)據(jù),理由是我們可以認(rèn)為這兩個(gè)軸的信息是數(shù)據(jù)的主成分,而這些信息對于我們的分析已經(jīng)足夠了,z’軸上的抖動(dòng)很有可能是噪聲,也就是說本來這組數(shù)據(jù)是有相關(guān)性的,噪聲的引入,導(dǎo)致了數(shù)據(jù)不完全相關(guān),但是,這些數(shù)據(jù)在z’軸上的分布與原點(diǎn)構(gòu)成的夾角非常小,也就是說在z’軸上有很大的相關(guān)性,綜合這些考慮,就可以認(rèn)為數(shù)據(jù)在x’,y’?軸上的投影構(gòu)成了數(shù)據(jù)的主成分。

PCA的思想是將n維特征映射到k維上(k<n),這k維是全新的正交特征。這k維特征稱為主成分,是重新構(gòu)造出來的k維特征,而不是簡單地從n維特征中去除其余n-k維特征。


總結(jié)一下,做PCA的主要步驟如下:

設(shè)有m條n維數(shù)據(jù)。

1)將原始數(shù)據(jù)按照m行n列排列的,如matlab和Python中都是這樣(每一列代表一個(gè)特征)

2)將X的每一列(代表一個(gè)屬性字段)進(jìn)行零均值化,即減去這一列的均值

3)求出協(xié)方差矩陣

4)求出協(xié)方差矩陣的特征值及對應(yīng)的特征向量

5)將上一步得到的特征向量組成矩陣V

6)求Y=XV,再取Y的前k列得到Y(jié)'即為要求的矩陣


這里注釋一下以上矩陣的維數(shù)便于理解,在編程時(shí)防止矩陣相乘時(shí)的維數(shù)錯(cuò)誤:

矩陣X:m x n (n維m個(gè)數(shù)據(jù))

矩陣V:n x n

矩陣Y:m x n(n維m個(gè)數(shù)據(jù))

矩陣Y':m x k(k維m個(gè)數(shù)據(jù))


?


【圖像壓縮】基于主成分分析PCA算法實(shí)現(xiàn)圖像壓縮matlab源碼的評論 (共 條)

分享到微博請遵守國家法律
柏乡县| 和静县| 汉阴县| 额济纳旗| 八宿县| 安达市| 东乡| 永胜县| 百色市| 六枝特区| 金秀| 崇义县| 稻城县| 苗栗县| 北海市| 宁陕县| 漠河县| 通州市| 阆中市| 布尔津县| 澄迈县| 石台县| 玛多县| 沙坪坝区| 将乐县| 英吉沙县| 普宁市| 康平县| 闵行区| 惠水县| 临安市| 仲巴县| 分宜县| 东阳市| 安岳县| 曲周县| 皋兰县| 达拉特旗| 阜康市| 本溪市| 天水市|