• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: C/C++
  • 标签: 立体匹配  SAD  C语言  

资源简介

用于立体视觉匹配,采用基于窗口的SAD作为相关测度,窗口大小可以改变,程序采用C语言编写。

资源截图

代码片段和文件信息

#include
#include
#include
#define w 384
#define h 288
#define DpMax 16
#define WinR 2
#define ff(ij) ip[(i)*w+(j)]
#define gg(ij) jp[(i)*w+(j)]
#define hh(ij) presult[(i)*w+(j)]
typedef unsigned char uchar;
int SAD(int aint bint cuchar * ipuchar *jp);
void Parallax(uchar * pluchar * pruchar * presult);
void main()
{
FILE * fp1* fp2* fp3;
uchar * pimgr* pimgl*pimgresult;  
/*
**读取文件指针pimglpimgr
*/
pimgr=(uchar*)malloc(w*h*sizeof(uchar));
pimgl=(uchar*)malloc(w*h*sizeof(uchar));
    pimgresult=(uchar*)malloc(w*h*sizeof(uchar));
fp1=fopen(“right.raw““rb“);
if(fp1==NULL)
{
printf(“打开文件right.raw失败/n“);
exit(0);
}
fp2=fopen(“left.raw““rb“);
    if(fp2==NULL)
{
printf(“打开文件left.raw失败/n“);
exit(0);
}
fp3=fopen(“result1.raw““wb“);
    if(fp3==NULL)
{
printf(“打开文件result1.raw失败/n“);
exit(0);
}
fread(pimgrw*hsizeof(uchar)fp1);
fread(pimglw*hsizeof(uchar)fp2);

    Parallax(pimglpimgrpimgresult);

    fwrite(pimgresult(w*h)sizeof(uchar)fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);


int SAD(int aint bint cuchar * ipuchar * jp)/*计算SAD函数*/
{
int ijsum=0;
    int w1w2;
for(i=-WinR;i<=WinR;i++)
for(j=-WinR;j<=WinR;j++)
{
w1=(int)ff(i+aj+b);
w2=(int)gg(i+aj+c);
sum=sum+abs(w1-w2);
}
return(sum);
}

void Parallax(uchar * pluchar * pruchar * presult)/*画出视差图*/
{
int ijksadmind;
for(i=WinR;i for(j=WinR;j {
/*求出与对应点之间距离d*/
for(k=0;k {
if(k+j>=w)break;
sad=SAD(ijk+jprpl);
if(k==0)
{
min=sad;d=k;
}
else
{
if(sad {
min=sad;d=k;
}
}
}
/*将距离d作为灰度值输入到图result1.raw中*/
hh(ij)=(uchar)(d*(int)(256/DpMax));
}
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1909  2018-06-02 22:23  alterwindow.cpp

评论

共有 条评论