灰度共生矩陣及相關特徵值的計算 opencv

2021-08-21 04:18:41 字數 2959 閱讀 7083

#include

#include

#include

#include

#include

using

namespace

std;

using

namespace cv;

const

int gray_level = 16;

void getglcm_horison(mat& input, mat& dst)//0度灰度共生矩陣}}

max_gray_level++;//畫素灰度最大值加1即為該矩陣所擁有的灰度級數

if (max_gray_level > 16)//若灰度級數大於16,則將影象的灰度級縮小至16級,減小灰度共生矩陣的大小。

}dst.create(gray_level, gray_level, cv_32sc1);

dst = scalar::all(0);

for (int i = 0; i < height; i++)}}

else

//若灰度級數小於16,則生成相應的灰度共生矩陣}}

}void getglcm_vertical(mat& input, mat& dst)//90度灰度共生矩陣}}

max_gray_level++;

if (max_gray_level > 16)

}dst.create(gray_level, gray_level, cv_32sc1);

dst = scalar::all(0);

for (int i = 0; i < height-1; i++)}}

else}}

}void getglcm_45(mat& input, mat& dst)//45度灰度共生矩陣}}

max_gray_level++;

if (max_gray_level > 16)

}dst.create(gray_level, gray_level, cv_32sc1);

dst = scalar::all(0);

for (int i = 0; i < height - 1; i++)}}

else}}

}void getglcm_135(mat& input, mat& dst)//135度灰度共生矩陣}}

max_gray_level++;

if (max_gray_level > 16)

}dst.create(gray_level, gray_level, cv_32sc1);

dst = scalar::all(0);

for (int i = 0; i < height - 1; i++)}}

else}}

}void feature_computer(mat&src, double& asm, double& eng, double& con, double& idm)//計算特徵值

}mat copy;

copy.create(height, width, cv_64fc1);

for (int i = 0; i < height; i++)

}for (int i = 0; i < height; i++)

}}int main()

mat src_gray;

cv_8uc1);

//src_gray = scalar::all(0);

cvtcolor(src, src_gray, color_bgr2gray);

//src =( mat_(6, 6) << 0, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 2, 2, 3, 0, 1, 2, 3, 3, 0, 1, 2, 3, 0, 0, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 2 );

//src = (mat_(4, 4) << 1, 17, 0, 3,3,2,20,5,26,50,1,2,81,9,25,1);

getglcm_horison(src_gray, dst_horison);

getglcm_vertical(src_gray, dst_vertical);

getglcm_45(src_gray, dst_45);

getglcm_135(src_gray, dst_135);

double eng_horison=0, con_horison=0, idm_horison=0, asm_horison=0;

feature_computer(dst_horison, asm_horison, eng_horison, con_horison, idm_horison);

cout

<< "asm_horison:"

<< asm_horison << endl;

cout

<< "eng_horison:"

<< eng_horison << endl;

cout

<< "con_horison:"

<< con_horison << endl;

cout

<< "idm_horison:"

<< idm_horison << endl;

/* for (int i = 0; i < dst_horison.rows; i++)

cout << endl;

}cout << endl;

for (int i = 0; i < dst_vertical.rows; i++)

cout << endl;

}cout << endl;

for (int i = 0; i < dst_45.rows; i++)

cout << endl;

}cout << endl;

for (int i = 0; i < dst_135.rows; i++)

cout << endl;

}*/system("pause");

return

0;}

Matlab GPU矩陣求特徵值計算

gpu求特徵值的使用方法 clear all clcm rand 2000,2000 生成乙個隨機矩陣 tic a1,b1 eig m 求該隨機矩陣的特徵值和特徵向量 t1 toc ticm single m 將資料轉換為單精度型 m gpuarray m 將資料從cpu中搬到gpu a2,b2 e...

特徵值 特殊矩陣的特徵值和特徵向量

特徵值與特徵向量 2 前 言 1 今天我們來討論一類特殊矩陣的特徵值和特徵向量。秩1 矩陣的性質希望同學們還沒有完全遺忘,正好通過今天的內容帶著大家複習下。2 i 雖然今天的矩陣不是抽象矩陣,但是想通過定義法求特徵值較為麻煩。這裡我們需要做乙個轉換 ax 0有非零解說明0是a的特徵值。ii 這裡我們...

理解矩陣特徵值及應用

將n階對稱矩陣a分解,用n個特徵向量q和特徵值 來表示,不同特徵值對應的特徵向量是相互正交的。特徵向量和特徵值可以很好的描述原始矩陣,方便實際應用。將矩陣投影在特徵向量上,特徵值即投影長度。特徵值越大,表示矩陣在對應特徵向量上資訊量越大,導數越大。反之,特徵值越小,表示資訊量較少,也可刪除對應特徵向...