• 大小: 1.21MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-14
  • 语言: 其他
  • 标签: ssda  图像处理  

资源简介

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


评论

共有 条评论