資源簡介
ssda 圖像處理 這是一種比較好的SSDA算法實現代碼,大家可以參考參考

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
//////////////////////////////////////////////////////////////////////////////////////////
bool?SsdaMate(char*?lpDIBchar*?lpTempDIBdouble?Tsigned?long?lWidthsigned?long?lTempWidth
??signed?long?lHeightsigned?long?lTempHeightunsigned?int?pat_size256unsigned?int?TotalLength1)//圖像匹配
{
/*
signed?long?lWidth=width1;
signed?long?lTempWidth=width2;
signed?long?lHeight=higth1;
signed?long?lTempHeight=higth2;
*/
//指向待匹配位圖像素的指針
unsigned?char?*?lpSrc;
????//指向模板像素的指針
unsigned?char?*?lpTempSrc;
//指向目的圖像的像素的指針
unsigned?char?*?lpDst;
????//指向待匹配位圖和模板圖像的像素的指針
char?*lpDIBBits*lpTempDIBBits;
//指向結果圖像的指針
char?*lpNewDIB;
//指向結果圖像的像素的指針
char?*lpNewDIBBits;
//待匹配位圖和模板位圖的每行的字節數
signed?long?lLineByteslTempLineBytes;
//計算待匹配位圖每行的字節數
lLineBytes=lWidth;//256色圖每個像素占8位,圖像寬度就是像素數,也即是字節數
//計算模板位圖每行的字節數
lTempLineBytes=lTempWidth;//256色圖每個像素占8位,圖像寬度就是像素數,也即是字節數
printf(“測試語句4,僅供測試使用!\n“);///////////////////////測試語句,僅供測試使用
//暫時分配內存,以保存新圖像
????char?*hDIB=(char?*)malloc(lHeight*lLineBytes+54+pat_size256);//實際上就是待匹配圖像的總長度(楊曉鵬)
//分配內存失敗,直接返回
if?(!hDIB)
{
printf(“memory?allocation?failed!\n“);?
exit(1);
}
lpNewDIB=hDIB;//lpNewDIB指向hDIB的首地址
//復制待匹配位圖的信息頭和調色板
memcpy(lpNewDIBlpDIB54+pat_size256);
printf(“測試語句5,僅供測試使用!\n“);///////////////////////測試語句,僅供測試使用
//找到結果位圖的像素的起始位置
lpNewDIBBits?=?(lpNewDIB)+54+pat_size256;//或者lpNewDIBBits?=?(lpNewDIB)+offset2;
//找到待匹配位圖的像素的起始位置
lpDIBBits=?(lpDIB)+54+pat_size256;//或者lpDIBBits=?(lpDIB)+offset1;
//找到模板位圖的像素的起始位置
lpTempDIBBits=lpTempDIB+54+pat_size256;//或者lpTempDIBBits=lpTempDIB+offset2;
printf(“測試語句6,僅供測試使用!\n“);///////////////////////測試語句,僅供測試使用
//把結果位圖初始化為白色
memset(lpNewDIBBits(unsigned?char)255lLineBytes*lHeight);
printf(“測試語句7,僅供測試使用!\n“);///////////////////////測試語句,僅供測試使用
//循環變量
signed?long?ijmn;
//絕對誤差
double?e;
//記錄最大累計次數的數組
int?*pMaxR=(int?*)calloc(lWidth*lHeightsizeof(int));
//分配內存失敗,直接返回
if?(!pMaxR)
{
printf(“memory?allocation?failed!\n“);?
exit(1);
}
//初始化最大累計數組為0
for(i=0;i pMaxR[i]=0;
//累計次數計數
int?R;
//累計次數最大是的像素位置
unsigned?long?MaxXMaxY;
//模板像素和待匹配位圖的子圖像素的平均值
double?dSigmaTdSigmaS;
double?ratio?=?lTempWidth*lTempHeight;
//計算模板位圖像素的平均值
dSigmaT=0;
for(m=0;m {
for(n=0;n {
lpTempSrc=(unsigned?char*)lpTempDIBBits
+lTempLineBytes*(lTempHeight-1-m)+n;
dSigmaT+=*lpTempSrc;
}
}
dSigmaT=dSigmaT/ratio;
//最大的隨機數
double?fMax=RAND_MAX;
//對待匹配位圖的每一個像素進行操作
//待匹配位圖每行,注意每行的范圍要減去模板的高度
for(j=0;j {
//待匹配位圖的每列,注意每列的范圍要減去模板的寬度
for(i=0;i {
//計算模板下的子圖的像素值的平均值
dSigmaS=0;
for(m=0;m {
for(n=0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????140288??2008-12-01?09:25??ssda\Debug\vc60.idb
?????文件??????86016??2008-12-01?09:25??ssda\Debug\vc60.pdb
?????文件????3660840??2008-12-01?09:25??ssda\Debug\bmp.pch
?????文件??????20282??2008-12-01?09:25??ssda\Debug\bmp.obj
?????文件?????195744??2008-12-01?09:25??ssda\Debug\bmp.ilk
?????文件?????184358??2008-12-01?09:25??ssda\Debug\bmp.exe
?????文件?????369664??2008-12-01?09:25??ssda\Debug\bmp.pdb
?????目錄??????????0??2006-04-13?15:48??ssda\Debug
?????文件??????????0??2006-04-08?00:02??ssda\~VCAB.tmp
?????文件??????77878??2006-03-30?15:58??ssda\001.bmp
?????文件???????5878??2006-04-17?11:07??ssda\0002.bmp
?????文件???????5878??2006-03-30?15:57??ssda\002.bmp
?????文件??????77878??2008-12-01?09:25??ssda\008.bmp
?????文件??????50176??2008-12-01?09:27??ssda\bmp.ncb
?????文件????????729??2008-12-01?09:25??ssda\bmp.plg
?????文件???????8722??2006-04-17?11:24??ssda\bmp.cpp
?????文件???????3365??2006-04-06?18:02??ssda\bmp.dsp
?????文件????????531??2006-04-05?23:43??ssda\bmp.dsw
?????文件??????53760??2008-12-01?09:27??ssda\bmp.opt
?????文件????????179??2008-12-01?09:15??ssda\notes.txt
?????目錄??????????0??2008-12-01?09:24??ssda
?????文件???????2144??2010-04-16?15:55??多線程的DDOS攻擊程序源代碼!下載回來編譯通不過.rar
-----------?---------??----------?-----??----
??????????????4944310????????????????????22
評論
共有 條評論