全局匹配演算法
⑴ 哪種立體匹配演算法不是全局匹配演算法
SSD不是全局匹配演算法,其他都是。
選項中的 4 個詞語的意思如下:
A. 動態規劃:動態規劃(英語:Dynamic programming,簡稱 DP)是一種在數學、計算機科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解復雜問題的方法。
B. 圖割:是「圖像分割」(Segmentation)的簡稱。在計算機視覺領域,圖像分割指的是將數字圖像細分為多個圖像子區域(像素的集合)(也被稱作超像素)的過程。圖像分割的目的是簡化或改變圖像的表示形式,使得圖像更容易理解和分析。圖像分割通常用於定點陣圖像中的物體和邊界(線,曲線等)。更精確的,圖像分割是對圖像中的每個像素加標簽的一個過程,這一過程使得具有相同標簽的像素具有某種共同視覺特性。圖像分割的結果是圖像上子區域的集合(這些子區域的全體覆蓋了整個圖像),或是從圖像中提取的輪廓線的集合(例如邊緣檢測)。一個子區域中的每個像素在某種特性的度量下或是由計算得出的特性都是相似的,例如顏色、亮度、紋理。鄰接區域在某種特性的度量下有很大的不同。
C. BP:反向傳播演算法(英語:Backpropagation algorithm,簡稱:BP演算法)是一種監督學習演算法,常被用來訓練多層感知機。 於 1974 年,Paul Werbos 首次給出了如何訓練一般網路的學習演算法,而人工神經網路只是其中的特例。不巧的,在當時整個人工神經網路社群中卻無人知曉 Paul 所提出的學習演算法。直到 80 年代中期,BP演算法才重新被 David Rumelhart、Geoffrey Hinton 及 Ronald Williams、David Parker 和 Yann LeCun 獨立發現,並獲得了廣泛的注意,引起了人工神經網路領域研究的第二次熱潮。BP演算法是對於多層的前向神經網路 Delta 規則的一般化,使用鏈式法則來迭代的計算每一層的梯度成為可能。BP演算法要求每個人工神經元(節點)所使用的激勵函數必須是可微的。
D. SSD:固態硬碟(Solid State Disk、Solid State Drive,簡稱 SSD)是一種以存儲器作為永久性存儲器的電腦存儲設備。雖然 SSD 已不是使用「碟」來記存數據,而是使用 NAND Flash,也沒有用來驅動(Drive)旋轉的馬達,但是人們依照命名習慣,仍然稱為固態硬碟(Solid-State Disk)或固態驅動器(Solid-State Drive)。也有翻譯為「固存」(「固態存儲器」的簡稱)。
⑵ bilibili問題
。。。為什麼分類你會選在C/C++裡面
⑶ 圖像匹配的演算法
迄今為止,人們已經提出了各種各樣的圖像匹配演算法,但從總體上講,這些匹配演算法可以分成關系結構匹配方法、結合特定理論工具的匹配方法、基於灰度信息的匹配方法、基於亞像元匹配方法、基於內容特徵的匹配方法五大類型 基於內容特徵的匹配首先提取反映圖像重要信息的特徵,而後以這些特徵為模型進行匹配。局部特徵有點、邊緣、線條和小的區域,全局特徵包括多邊形和稱為結構的復雜的圖像內容描述。特徵提取的結果是一個含有特徵的表和對圖像的描述,每一個特徵由一組屬性表示,對屬性的進一步描述包括邊緣的定向和弧度,邊與線的長度和曲率,區域的大小等。除了局部特徵的屬性外,還用這些局部特徵之間的關系描述全局特徵,這些關系可以是幾何關系,例如兩個相鄰的三角形之間的邊,或兩個邊之間的距離可以是輻射度量關系,例如灰度值差別,或兩個相鄰區域之間的灰度值方差或拓撲關系,例如一個特徵受限於另一個特徵。人們一般提到的基於特徵的匹配絕大多數都是指基於點、線和邊緣的局部特徵匹配,而具有全局特徵的匹配實質上是我們上面提到的關系結構匹配方法。特徵是圖像內容最抽象的描述,與基於灰度的匹配方法比,特相對於幾何圖像和輻射影響來說更不易變化,但特徵提取方法的計算代價通常較,並且需要一些自由參數和事先按照經驗選取的閉值,因而不便於實時應用同時,在紋理較少的圖像區域提取的特徵的密度通常比較稀少,使局部特徵的提 取比較困難。另外,基於特徵的匹配方法的相似性度量也比較復雜,往往要以特徵屬性、啟發式方法及閉方法的結合來確定度量方法。基於圖像特徵的匹配方法可以克服利用圖像灰度信息進行匹配的缺點,由於圖像的特徵點比象素點要少很多,因而可以大大減少匹配過程的計算量同時,特徵點的匹配度量值對位置的變化比較敏感,可以大大提高匹配的精確程度而且,特徵點的提取過程可以減少雜訊的影響,對灰度變化,圖像形變以及遮擋等都有較好的適應能力。所以基於圖像特徵的匹配在實際中的應用越來越廣-泛。所使用的特徵基元有點特徵明顯點、角點、邊緣點等、邊緣線段等。
⑷ SGM半全局匹配演算法求助
#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include <iostream>
#include<cv.h>
#include<highgui.h>
#include <cmath>
using namespace std;
const int Width = 1024;
const int Height = 1024;
int Lvalue[Width][Width];
uchar C(int x, int y, int d, IplImage * matchImage, IplImage * baseImage)
{
uchar * pMatchPixel = NULL;
uchar * pBasePixel = NULL;
uchar matchPixel = 0;
uchar basePixel =0;
uchar matchMax = 0;
uchar matchMin = 0;
uchar tempMatch1 = 0;
uchar tempMatch2 = 0;
uchar difPixel = 0;
if (x+d <= matchImage->width && x+d >= 0)
{
pMatchPixel = (uchar *)matchImage->imageData + y*matchImage->widthStep + (x+d);
matchPixel = *pMatchPixel;
pBasePixel= (uchar *)baseImage->imageData + y*baseImage->widthStep + x;
basePixel = *pBasePixel;
//匹配影像上的像素點與其左、右像素點的平均值,線性插值的方法
tempMatch1 = (*pMatchPixel +(*(pMatchPixel -1)))/2;
tempMatch2 = (*pMatchPixel +(*(pMatchPixel +1)))/2;
matchMax = max(max(tempMatch1,tempMatch2),matchPixel);
matchMin = min(min(tempMatch1,tempMatch2),matchPixel);
//賦予視差d時的匹配代價C
//BT法
difPixel = max(max(basePixel - matchMax, matchMin - basePixel),0);
//AD法
//difPixel = abs(basePixel - matchPixel);
return difPixel;
}
else
return 255;
}
int main()
{
IplImage * leftImage = cvLoadImage("headL.png",0);
IplImage * rightImage = cvLoadImage("headR.png",0);
int imageWidth = leftImage->width;
int imageHeight =leftImage->height;
int minLvalue = 1000;
int minL1 = 1000;
int minL2 = 1000;
int P1 = 2;
int P2 = 5;
int disparity= 0;
int minDis = 0;
int maxDis = 21;
int scale = 12;
unsigned char * pPixel = NULL;
#pragma region 實現橫向DP(以右影像為准,0度方向)
IplImage * MyDPImage_0 = cvCreateImage(cvGetSize(leftImage),leftImage->depth,1);
cvZero(MyDPImage_0);
int t3 = clock();
for (int i = 0; i < imageHeight;i++)
{
for (int j = 0; j<imageWidth ;j++)
{
disparity = 0;
minL1 = 1000;
minL2 = 1000;
for (int d = minDis; d <= maxDis; d++)
{
//初始化為代價函數的值
Lvalue[j][d] = C(j, i, d, leftImage, rightImage);
if (j > 0)
{
minL1 = min(minL1, Lvalue[j-1][d]);
}
}
for (int d = minDis; d <= maxDis; d++)
{
if (j > 0)
{
minL2 = min(minL2, Lvalue[j-1][d]);
minL2 = min(minL2, (Lvalue[j-1][d+1] + P1));
minL2 = min(minL2, (Lvalue[j-1][d-1] + P1));
minL2 = min(minL2, (minL1 + P2));
Lvalue[j][d] = Lvalue[j][d] + (minL2 - minL1);
}
}
int max=Lvalue[j][0];
for(int d=minDis;d<=maxDis;++d)
{
if(Lvalue[j][d]<max)
{
disparity=d;
max=Lvalue[j][d];
}
}
disparity=disparity*scale;
//生成視差圖
pPixel = (uchar *)MyDPImage_0->imageData + i*MyDPImage_0->widthStep + j;
*pPixel =disparity;
}
}
int t4 = clock();
cout<<"橫向DP共用時: "<<t4-t3<<"ms"<<endl;
cvNamedWindow("MyDPImage_0", 1);
cvShowImage("MyDPImage_0", MyDPImage_0);
cvSaveImage("MyDPImage_0.jpg", MyDPImage_0);
#pragma endregion
#pragma region 實現橫向DP(以左影像為准,0度方向)
IplImage * MyDPImage_0_L = cvCreateImage(cvGetSize(leftImage),leftImage->depth,1);
cvZero(MyDPImage_0_L);
for (int i = 0; i < imageHeight;i++)
{
for (int j = 0; j<imageWidth;j++)
{
disparity = 0;
minL1 = 1000;
minL2 = 1000;
for (int d = minDis; d <= maxDis; d++)
{
//初始化為代價函數的值
Lvalue[j][d] = C(j, i, -d, rightImage, leftImage);
if (j > 0)
{
minL1 = min(minL1, Lvalue[j-1][d]);
}
}
for (int d = minDis; d <= maxDis; d++)
{
if (j > 0)
{
minL2 = min(minL2, Lvalue[j-1][d]);
minL2 = min(minL2, (Lvalue[j-1][d+1] + P1));
minL2 = min(minL2, (Lvalue[j-1][d-1] + P1));
minL2 = min(minL2, (minL1 + P2));
Lvalue[j][d] = Lvalue[j][d] + minL2 - minL1;
}
}
int max=Lvalue[j][0];
for(int d=0;d<=maxDis;++d)
{
if(Lvalue[j][d]<max)
{
disparity=d;
max=Lvalue[j][d];
}
}
disparity = disparity * scale;
//生成視差圖
pPixel = (uchar *)MyDPImage_0_L->imageData + i*MyDPImage_0_L->widthStep + j;
*pPixel = disparity;
}
}
cvNamedWindow("MyDPImage_0_L", 1);
cvShowImage("MyDPImage_0_L", MyDPImage_0_L);
cvSaveImage("MyDPImage_0_L.jpg", MyDPImage_0_L);
#pragma endregion
#pragma region 一致性檢查
uchar * pLeftDepthPixel = NULL;
uchar * pRightDepthPixel = NULL;
uchar leftDepthPixel = 0;
uchar rightDepthPixel =0;
uchar difDepthPixel = 0;
IplImage * CheckImage_0 = cvCloneImage(MyDPImage_0);
cvZero(CheckImage_0);
for (int i = 0; i < imageHeight; i++)
{
for(int j = 0; j < imageWidth; j++)
{
pRightDepthPixel = (uchar *)MyDPImage_0->imageData + i*MyDPImage_0->widthStep + j;
rightDepthPixel = *pRightDepthPixel;
if(j + rightDepthPixel/scale < imageWidth)
{
pLeftDepthPixel = (uchar *)MyDPImage_0_L->imageData + i*MyDPImage_0_L->widthStep + j + rightDepthPixel/scale;
leftDepthPixel = *pLeftDepthPixel;
}
else
leftDepthPixel = 0;
difDepthPixel = abs((leftDepthPixel - rightDepthPixel)/scale);
pPixel = (uchar *)CheckImage_0->imageData + i * CheckImage_0->widthStep +j;
if (difDepthPixel <= 1)
{
*pPixel = rightDepthPixel;
}
else
{
//否則,當前像素的視差值為零
*pPixel = 0;
}
}
}
int lp,rp;
int lx,rx;
for(int i=0;i<imageHeight;i++)
{
for(int j=0;j<imageWidth;j++)
{
int tem = *((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep + j);
if(tem==0)
{
lp = rp = 0;
lx = j;
rx = j;
if(lx-1<0)
lp= *((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep + lx);
while((lp==0)&&( lx-1 >= 0 ))
lp = *((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep + (--lx));
if(rx+1>=imageWidth)
rp = *((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep + rx);
while((rp==0)&&(rx+1<imageWidth))
rp = *((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep +(++rx));
if (lp > rp)
{
*((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep + j) = rp;
}
else
{
*((uchar *)CheckImage_0->imageData+i*CheckImage_0->widthStep + j) = lp;
}
}
}
}
cvSmooth(CheckImage_0,CheckImage_0,CV_MEDIAN,3,0,0);
cvNamedWindow("CheckImage_0", 1);
cvShowImage("CheckImage_0", CheckImage_0);
cvSaveImage("CheckImage_0.jpg", CheckImage_0);
#pragma endregion
cout << "完成!"<<endl;
cvWaitKey(0);
return 0;
}
⑸ B站問題要難死啦,這有11道題幫忙回答一下
#1
Infinite Stratos
#2
凰華女學院
#3
白夜叉
#4
高須龍兒
#5
ssd
#6
9982
#7
熱傳導
#8
東方projec
#9
《幽靈公主》
#10
苦逼
#11
花澤類
⑹ bilibili會員,求大神
1、俄羅斯
2、同溫層堡壘
3、賽文
4、*(ar+i)
5、MikuMikuDance
6、alt+滑鼠中鍵
7、麥哲倫
8、FC
9、IS-85
10、俾斯麥號
11、河北省
12、5個
13、陸小鳳
14、Howard
15、遼寧號
16、SSD
17、鹽澤兼人
18、203mm
19、低磁滯損失的鐵磁性物質
20、郭德綱
21、440Hz
22、淡出
23、聽我怒吼
24、純音樂
25、未來穗香
26、慶應櫻井翔
27、400枚各型炮彈
28、AE插件Twitch
29、諾亞
30、男生&女生
大部分來自網路,小部分自己知道的。
⑺ 下列哪種立體匹配演算法不是全局匹配演算法
Z 因為沒這個選項