資源簡介
基于OpenCV的紅點識別,對做圖像目標識別跟蹤領域方面工作的有啟發.

代碼片段和文件信息
#include?“math.h“
int?getThreshold(int?Hangint?Lie?unsigned?char?*buffer)
{
int?ij;
//二維OTSU法求取閾值nThreshold
????
double?dHistogram[256][256]; ????//建立二維灰度直方圖
double?dTrMatrix?=?0.0;?????????????//離散矩陣的跡
int?N?=?Lie*Hang;???????????????//總像素數
for(i=0;?i<256;?i++)
{
for(j=0;?j<256;?j++)
dHistogram[i][j]?=?0.0;??????//初始化變量
}
for(i=0;?i {
for(int?j=0;?j {
unsigned?char?nData1?=?(unsigned?char)buffer[i*Hang+j];??//當前的灰度值
unsigned?char?nData2?=?0;
int?nData3?=?0;?????????//注意9個值相加可能超過一個字節
for(int?m=i-1;?m<=i+1;?m++)
{
for(int?n=j-1;?n<=j+1;?n++)
{
if((m>=0)&&(m=0)&&(n nData3?+=?(unsigned?char)buffer[m*Hang+n];?//當前的灰度值
}
}
nData2?=?(unsigned?char)(nData3/9);????//對于越界的索引值進行補零鄰域均值
dHistogram[nData1][nData2]++;
}
}
for(i=0;?i<256;?i++)
for(int?j=0;?j<256;?j++)
dHistogram[i][j]?/=?N;??//得到歸一化的概率分布
double?Pai?=?0.0;??????//目標區均值矢量i分量
double?Paj?=?0.0;??????//目標區均值矢量j分量
double?Pbi?=?0.0;??????//背景區均值矢量i分量
double?Pbj?=?0.0;??????//背景區均值矢量j分量
double?Pti?=?0.0;??????//全局均值矢量i分量
double?Ptj?=?0.0;??????//全局均值矢量j分量
double?W0?=?0.0;???????//目標區的聯合概率密度
double?W1?=?0.0;???????//背景區的聯合概率密度
????double?dData1?=?0.0;
double?dData2?=?0.0;
double?dData3?=?0.0;
double?dData4?=?0.0;???//中間變量
int?nThreshold_s?=?0;
int?nThreshold_t?=?0;
double?temp?=?0.0;?????//尋求最大值
//求Pti全局均值矢量i,Ptj全局均值矢量j
for(i=0;?i<256;?i++)
{
for(int?j=0;?j<256;?j++)
{
Pti?+=?i*dHistogram[i][j];
Ptj?+=?j*dHistogram[i][j];
}
}
for(i=0;?i<256;?i++)
{
for(int?j=0;?j<256;?j++)
{
W0?+=?dHistogram[i][j];
dData1?+=?i*dHistogram[i][j];
dData2?+=?j*dHistogram[i][j];
W1?=?1-W0;
dData3?=?Pti-dData1;
dData4?=?Ptj-dData2;
/* W1=dData3=dData4=0.0;???//對內循環的數據進行初始化
for(int?s=i+1;?s<256;?s++)
{
for(int?t=j+1;?t<256;?t++)
{
W1?+=?dHistogram[s][t];
dData3?+=?s*dHistogram[s][t];??//方法2
dData4?+=?t*dHistogram[s][t];??//也可以增加循環進行計算
}
}*/
Pai?=?dData1/W0;
Paj?=?dData2/W0;
Pbi?=?dData3/W1;
Pbj?=?dData4/W1;???//?得到兩個均值向量,用4個分量表示
dTrMatrix?=?((W0*Pti-dData1)*(W0*Pti-dData1)+(W0*Ptj-dData1)*(W0*Ptj-dData2))/(W0*W1);
if(dTrMatrix?>?temp)
{
temp?=?dTrMatrix;
nThreshold_s?=?i;
nThreshold_t?=?j;
}
}
}
return?nThreshold_t;???//返回結果中的灰度值
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4946??2012-09-22?19:21??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\getThreshold.obj
?????文件??????????0??2012-09-22?19:21??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\getThreshold.sbr
?????文件??????34801??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\main.obj
?????文件??????????0??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\main.sbr
?????文件????2376704??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\RedDetected.bsc
?????文件?????266299??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\RedDetected.exe
?????文件?????402652??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\RedDetected.ilk
?????文件????7177420??2012-09-23?09:58??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\RedDetected.pch
?????文件?????599040??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\RedDetected.pdb
?????文件?????222208??2012-11-25?23:22??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\vc60.idb
?????文件?????151552??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug\vc60.pdb
?????文件???????2673??2012-09-22?19:19??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\getThreshold.cpp
?????文件?????????42??2012-09-22?12:44??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\header.h
?????文件????1440054??2012-09-19?19:53??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\IMG_20120919_195323_0.bmp
?????文件?????403330??2012-09-19?21:22??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\IMG_20120919_212258_0.jpg
?????文件?????355195??2012-09-19?21:23??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\IMG_20120919_212315_0.jpg
?????文件???????6285??2012-10-10?19:43??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\main.cpp
?????文件???????4420??2012-09-23?12:05??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\RedDetected.dsp
?????文件????????545??2012-09-21?10:01??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\RedDetected.dsw
?????文件??????66560??2012-11-26?00:02??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\RedDetected.ncb
?????文件??????48640??2012-11-26?00:02??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\RedDetected.opt
?????文件???????1671??2012-10-10?20:00??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\RedDetected.plg
?????文件??????16384??2012-10-28?23:24??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\~VCEEC.tmp
?????文件??????????0??2012-10-28?23:24??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\~VCEED.tmp
?????目錄??????????0??2012-11-27?18:50??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected\Debug
?????目錄??????????0??2013-05-09?12:59??基于OpenCV的紅點識別\基于opencv的紅點識別\FallowRedDetected
?????目錄??????????0??2013-05-09?12:59??基于OpenCV的紅點識別\基于opencv的紅點識別
?????目錄??????????0??2013-05-09?12:59??基于OpenCV的紅點識別
-----------?---------??----------?-----??----
?????????????13581421????????????????????28
............此處省略1個文件信息
評論
共有 條評論