资源简介
CUDA实现的图像融合算法,图像格式为BMP。实例处理图像为:将一张清晰地黑白图像和一张模糊彩色图像融合为一张较为清晰地彩色图像,利用CUDA实现并行计算。
代码片段和文件信息
#include “BMPImage2.h“
#include
BMPIMAGE* BmpRead(char *filename)
{
FILE *infile;
unsigned char *buffer BmpHeader[54];
long i j width height BitCount compression LineBytes;
unsigned short type;
BMPIMAGE *image=NULL;
if (filename == NULL)
{
printf(“ERROR in read: Filename is NULL assign it\n“);
return NULL;
}
infile = fopen (filename “rb“);
if (infile == NULL)
{
printf(“Unable to open file %s\n“ filename);
return NULL;
}
fread(BmpHeader CharLen 54 infile);
type = (BmpHeader[1] << 8) + BmpHeader[0];
width =(BmpHeader[21] << 24)+(BmpHeader[20] << 16)+(BmpHeader[19] << 8) + BmpHeader[18];
height =(BmpHeader[25] << 24)+(BmpHeader[24] << 16)+(BmpHeader[23] << 8) + BmpHeader[22];
BitCount = (BmpHeader[29] << 8) + BmpHeader[28];
compression =(BmpHeader[33] << 24)+(BmpHeader[32] << 16)+(BmpHeader[31] << 8) + BmpHeader[32];
LineBytes = (width * BitCount + 31) / 32 * 4;
if (type != ((unsigned short)(‘M‘ << 8) | ‘B‘))
{
printf(“the file maybe is not a bmp image.\n“);
return NULL;
}
if (compression != 0)
{
printf(“Can not read a compressed file.\n“ filename);
return NULL;
}
if ((BitCount!=8)&&(BitCount!=24) )
{
printf(“This program can only deal with the file with 256 colors or true color. \n“ filename);
return NULL;
}
if(BitCount == 8)
{
if ((image = ImageAlloc(height width BitCount)) == NULL)
{
printf(“ERROR when read call ImageAlloc.\n“);
return NULL;
}
buffer = new unsigned char [LineBytes];
fseek(infile 1078 SEEK_SET);
for(i=0; i<=height-1; i++)
{
fread (buffer CharLen LineBytes infile);
for(j=0; j image->gray[i*width+j] = buffer[j];
}
}
if(BitCount == 24)
{
if ((image = ImageAlloc(height width BitCount)) == NULL)
{
printf(“ERROR when read call ImageAlloc.\n“);
return NULL;
}
buffer = new unsigned char [LineBytes];
fseek(infile 54 SEEK_SET);
for(i=0; i<=height-1; i++)// i: 0 --> (biHeight-1)
{
fread (buffer CharLen LineBytes infile);
for(j = 0; j < width; j++)
{
image->blue[i*width+j] = buffer[3*j];
image->green[i*width+j] = buffer[3*j+1];
image->red[i*width+j] = buffer[3*j+2];
}
}
}
delete [] buffer;
fclose (infile);
return image;
}
BMPIMAGE* BmpRead2(char *filenamelong xslong yslong xt long yt)
{
FILE *infile;
unsigned char *buffer BmpHeader[54];
long i j width height BitCount compression LineBytes;
unsigned short type;
BMPIMAGE *image=NULL;
long wh;
if (filename == NULL)
{
printf(“ERROR in read: Filename is NULL assign it\n“);
return NULL;
}
infile = fopen (filename “rb“);
if (infile == NULL)
{
printf(“Unable to open file %s\n“ filename);
return NULL;
}
fread(BmpHeader CharLen 54 infile);
type = (BmpHeader[1] << 8) + BmpHeader[0];
width =(BmpHeader[21] << 24)+(BmpHeader[20]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 417792 2010-10-16 08:56 Fusion\debug\Fusion.exe
文件 1879040 2010-10-16 08:56 Fusion\debug\Fusion.pdb
文件 32592 2010-10-15 11:26 Fusion\Fusion\BMPImage2.cpp
文件 1460 2010-10-14 10:15 Fusion\Fusion\BMPImage2.h
文件 32382 2010-10-15 21:10 Fusion\Fusion\Debug\BMPImage2.obj
文件 11358 2010-10-16 08:56 Fusion\Fusion\Debug\BuildLog.htm
文件 34395 2010-10-16 08:56 Fusion\Fusion\Debug\Fusion.cu.obj
文件 145 2010-10-16 08:56 Fusion\Fusion\Debug\Fusion.exe.intermediate.manifest
文件 67 2010-10-16 08:56 Fusion\Fusion\Debug\mt.dep
文件 44032 2010-10-15 21:10 Fusion\Fusion\Debug\vc80.idb
文件 53248 2010-10-15 21:10 Fusion\Fusion\Debug\vc80.pdb
文件 3674 2010-10-15 21:23 Fusion\Fusion\Fusion.cu
文件 8103 2010-10-14 09:44 Fusion\Fusion\Fusion.vcproj
文件 2661 2010-10-16 08:56 Fusion\Fusion\Fusion.vcproj.AD24BBE2B6134E1.Administrator.user
文件 641080 2010-06-29 16:56 Fusion\Fusion\gray.bmp
文件 1920054 2010-10-16 08:56 Fusion\Fusion\result.bmp
文件 1920056 2010-06-29 16:55 Fusion\Fusion\rgb.bmp
文件 159744 2010-10-16 08:56 Fusion\Fusion\vc80.pdb
文件 470016 2010-10-16 08:56 Fusion\Fusion.ncb
文件 1297 2010-10-14 09:28 Fusion\Fusion.sln
..A..H. 11264 2010-10-16 08:56 Fusion\Fusion.suo
目录 0 2010-10-17 00:18 Fusion\Fusion\Debug
目录 0 2010-10-17 00:18 Fusion\debug
目录 0 2010-10-17 00:18 Fusion\Fusion
目录 0 2010-10-17 00:18 Fusion
----------- --------- ---------- ----- ----
7644460 25
- 上一篇:新版答题卡制作系统
- 下一篇:TMS320F2812手册
相关资源
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- 基于小波变换的医学图像融合
- MPI和CUDA在多层快速多极子中的应用
- 基于NSCT的红外与可见光图像融合算法
- 城市卫星遥感图像融合处理质量评价
- 图像融合的图像数据集
- NSCT&HSI 融合.rar
- GPU高性能运算之CUDA源代码
- CUDA实现稀疏大矩阵乘法
- 使用CUDA做图像模湖匹配
- 深入浅出谈CUDA.
- 数字处理中 图像融合实验源图片
- 基于CUDA 的矩阵乘法和FFT 性能测试
- 《GPU高性能计算之CUDA》书中源代码
- Image registration pdf 图像融合 英文版
- 图像融合 CNN.zip
- CUDA9.2及cudnn7.1 for win10
- CUDA Fortran for Scientists and Engineers[英文
- _CPU_GPU协同并行计算研究综述_cuda_op
- 多尺度稀疏 图像融合.zip
- 高斯图像融合
- nVIDIA显卡CUDA性能测试工具,可测试
- CUDA的图像分割并行算法的设计与实现
- Jetson-TX2手动安装CUDA和Cudnn.pdf
- cuda_cudpp源码
- 《CUDA C编程权威指南》的源码
- 图像融合算法大全 image fusion
- 多聚焦图像融合算法的研究
- openg多光谱图像融合
- matconvnet的gpu编译版本(cuda7.5)
评论
共有 条评论