資源簡介
灰度共生矩陣的實現,環境為vs2010+opencv2,參考書本為數字圖像處理與機器視覺P386。僅供參考。傾聽寶貴意見。
代碼片段和文件信息
#include?“stdafx.h“
#include?
#include?
using?namespace?cv;
using?namespace?std;
void?LQGetGLCM_Horizon(Mat&?input?Mat&?dst)
{
Mat?src?=?input;
CV_Assert(1?==?src.channels());
src.convertTo(src?CV_32S);
int?height?=?src.rows;
int?width??=?src.cols;
///?統計灰度級總數
int?maxpixel?=?0;
for(int?j?=?0;?j? {
int*?srcdata?=?src.ptr(j);
for?(int?i?=?0;?i? {??
if(srcdata[i]?>?maxpixel)
{
maxpixel?=?srcdata[i];
}
?}
}
maxpixel++;
dst.create(maxpixel?maxpixel?CV_32SC1);
dst?=?Scalar::all(0);
int?temp;
??? for(int?j?=?0;?j? {
int*?srcdata?=?src.ptr(j);
for?(int?i?=?0;?i? {??
temp?=?srcdata[i]?-?srcdata[i+1];
if(temp?>?0)
dst.ptr(srcdata[i+1])[srcdata[i]]++;
else
dst.ptr(srcdata[i])[srcdata[i+1]]++;
}
}
for?(int?j?=?0;?j? {
for?(int?i?=?j+1;?i? {
temp?=?dst.ptr(j)[i]?+?dst.ptr(i)[j];
dst.ptr(j)[i]?=?temp;
dst.ptr(i)[j]?=?temp;
}
}
}
void?LQGetGLCM_Vertical(Mat&?input?Mat&?dst)
{
Mat?src?=?input;
CV_Assert(1?==?src.channels());
src.convertTo(src?CV_32S);
int?height?=?src.rows;
int?width??=?src.cols;
///?統計灰度級總數
int?maxpixel?=?0;
for(int?j?=?0;?j? {
int*?srcdata?=?src.ptr(j);
for?(int?i?=?0;?i? {??
if(srcdata[i]?>?maxpixel)
{
maxpixel?=?srcdata[i];
}
}
}
maxpixel++;
dst.create(maxpixel?maxpixel?CV_32SC1);
dst?=?Scalar::all(0);
int?temp;
for(int?j?=?0;?j? {
int*?srcdata?=?src.ptr(j);
for?(int?i?=?0;?i? {??
temp?=?srcdata[i]?-?src.ptr(j+1)[i]/*srcdata[i+1]*/;
if(temp?>?0)
dst.ptr(src.ptr(j+1)[i])[srcdata[i]]++;
else
dst.ptr(srcdata[i])[src.ptr(j+1)[i]]++;
}
}
for?(int?j?=?0;?j? {
for?(int?i?=?j+1;?i? {
temp?=?dst.ptr(j)[i]?+?dst.ptr(i)[j];
dst.ptr(j)[i]?=?temp;
- 上一篇:分割閾值opencv2
- 下一篇:OpenMP實現矩陣乘法
評論
共有 條評論