项目笔记--图像处理

8.13

http://blog.163.com/cumt_xl/blog/static/1907150442012765348460/
当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)(致命错误C1853: “filename.pch”预编译头文件来自编译器的早期版本,或者预编译头为C++ 而在C 中使用它(或相反))。

该错误是因为当项目中混合了 .cpp 和 .c 文件时,编译器会对它们采取不同的编译方式(主要是因为对函数声明的处理方式不同),因而不能共用一个预编译头文件。在 VC++ 中,默认的预编译头文件是针对 C++ 的 (stdafx.h 和 stdafx.cpp),当然也可以创建针对 C 的预编译头


http://www.cnblogs.com/sunnyjones/archive/2008/10/31/1323438.html
在C++ 程序中调用被C 编译器编译后的函数,要加extern “C”

http://www.wumii.com/item/50eQfspe        ????????????????

??????????????????????????????????//
1>d:\project\texture4\texture4\grayshow.c(380): error C2275: “BITMAPINFOHEADER”: 将此类型用作表达式非法

 

http://blog.csdn.net/wd0225/article/details/7571133
MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'。

8.14

C语言的参数传递有传值和传地址两种方式。

彩色图像在Matlab存储的矩阵是几维的?
3维的;对于BMP或JPEG图像image(h;w;z);其中h是图片的高,w是图片宽,z可以为1、2、3;分别对应R,G,B三原色。

256色 bmp 图 ,是8位(深度),表示一个像素用8bit来表示。16色是4位。单色图是1位。
24位  bmp 图(位图),matlab 读取是 三维矩阵。
(只有 RGB imagine 和colormap 才可以使用 matlab里的 rgb2gray ()函数,进行灰度化处理。   )(8位 bmp 图,不能使用 rgb2gray(),因为 8位 bmp 读取后是二维矩阵 )
(rgb2gray()处理后形成二维矩阵,返回一个灰度调色板)

灰度化的三种方法:最大值法、平均值法、还是权重法。matlab里用的是权重法:(matlab help)
rgb2gray converts RGB values to grayscale valuesby forming a weighted sum of
the R, G,and B components:0.2989 * R + 0.5870 * G + 0.1140 * B

8.15  ??

lineByte
24位位图占3个字节,所以在计算时使用lineByte=(bmpWidth * biBitCount/8+3)/4*4;
除以4乘以4 :使成为4的倍数,why?

8.16

时间序列的图像
4阶矩  u_k=E((X-u)^k)
http://hi.baidu.com/karashun/item/c89846f4c4b22dcb521c2679

机器视觉:被检测的目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号,图像处理系统对这些信号进行各种运算来抽取目标的特征,

直方图(Histogram)又称柱状图、质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。

向量并行求和:一维归约、矩阵求和:二维归约
取代 迭代 思想。

8.17

matlab 批处理  将数组里的数,追加写进一个文件中
 
matlab 一维数组,每个元素都是字符串???

matlab 为什么总提示 C 有4个元素,为什么只能写到文件中4组数据?

8.18
HSV颜色模型

8.22
http://www.docin.com/p-256914952.html
http://wenku.baidu.com/view/ec2d8b2b915f804d2b16c1f6.html###
http://blog.csdn.net/xhz1234/article/details/7487767
http://bbs.csdn.net/topics/310177964
http://wenku.baidu.com/view/1edc167d31b765ce050814d4.html###
http://www.docin.com/p-256914952.html
http://cdmd.cnki.com.cn/Article/CDMD-10614-1012471085.htm
http://blog.csdn.net/bendanban/article/category/805388/3


改图片分割 程序
直接将数据写进 excel

8.25
前端总线
8.26
C++ AMP
是微软Visual Studio和C++编程语言的新扩展,用于帮助开发人员充分适应现在和未来的高度并行和异构计算环境。它使用C++语言的句法,随同Visual Studio 2012一同发布。

CUDA 5.5最大的变化当属首次提供了对ARM架构的完整支持,可在ARM平台上进行原生编译,而不再局限于x86。

8.27
<深入浅出谈CUDA>--
(不适用 thread 的话)
    实际上,如果只是计算平方和,cpu 比gpu 快,GPU 把时间花在将数据复制到显卡内存上。
    如果平方和的计算时一个更复杂的计算的一部分,那么gpu上有好处。。而且,如果数据已经在显卡内存上(例如在 GPU 上透过某种算法产生),那么,使用 GPU 进行这样的运算,还是会比较快的。
     这个计算的主要瓶颈是内存带宽。

8.29
CUDA 传递结构体指针
http://bbs.csdn.net/topics/390023336

http://wenku.baidu.com/view/5d174aef0975f46527d3e183.html
8.30
http://blog.csdn.net/yanghangjun/article/details/6067534
计算结果的误差偏高的原因是,在 CPU 上进行计算时,我们使用 double(即 64 bits 浮点数)来累进计算过程,而在 GPU 上则只能用 float(32 bits 浮点数)。在累加大量数字的时候,由于累加结果很快会变大,因此后面的数字很容易被舍去过多的位数。

8.31
--bindlessTexture_kernel.cu
checkCudaErrors()

.cu 里也有 if else

.cpp .cu里均可由 main 函数
 
cudaMemory2D  cudaMemory  二维和一维
前者二维数组,但是用时仍可用一维的形式。
见(cuda 入门程序)。后者
http://bbs.csdn.net/topics/330006241
前者
http://blog.csdn.net/xhz1234/article/details/7487767
http://blog.csdn.net/yanghangjun/article/details/6067534

-------Kahan's Summation Formula
http://blog.csdn.net/yanghangjun/article/details/6067534

CUDA 工程 主函数放在那个文件中? 自己建一个main.cpp,写main函数,但是,这个函数中只能调用host 函数。这这些host 函数中调用 global 函数。
或者在.cu 里写 global 函数,但是此时所有的 global 函数,必须和main 函数放在同一个.cu文件中。
cuda if  .cu  .cpp文件how使用同一个结构体?

global 函数 不用 extern c 声明

你可能感兴趣的:(CUDA,GPU,C,图像特征提取)