曲率滤波的简单实现只有源码

/** 打算自己实现一个更快更好的曲率滤波的算法将其开源, 但发现按照作者的博士论文的算法出来的效果,达不到作者文献中的效果。 而看作者公开的代码,发现和作者论文的算法又差距较大。 应该是鄙人对作者算法理解的问题,这里是我实现的一些代码,并不能直接运行,但不影响阅读。 我的实现...

2016-12-04 15:57:27

阅读数:1177

评论数:0

C语言实现通用数据结构的高效设计

以简单的插入排序为例,说明如何在C语言中实现对任意数据类型的支持,同时模拟C++的模板,在代码大小和运行效率上取得平衡。

2014-10-31 16:14:36

阅读数:1995

评论数:0

MATLAB conv2卷积的实现

MATLAB conv2卷积的实现

2014-08-26 19:13:36

阅读数:16789

评论数:0

矩阵LU分解分块算法实现

本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码。 1. 什么是LU分解?          矩阵的LU分解源于线性方程组的高斯消元过程。对于一个含有N个变量的N个线性方程组,总可以用高斯消去法,把左边的系数矩阵分解为一个单位下三角矩阵和一个上三角矩阵相乘的形式。...

2014-08-06 18:37:30

阅读数:5484

评论数:1

对图像去噪的拙见

本文主要从实用主义的角度,描述了作者对当前图像去噪算法一些见解。

2013-12-29 15:50:30

阅读数:11287

评论数:10

CUDA编程札记

1.      关于线程号的计算方式   1.1  使用N个线程块,每一个线程块只有1个线程 此时线程号的计算方式如下:   Tid = blockIdx.x 其中,Tid的取值范围为0到N-1。 对于此种情况,可以看做一个列向量,列向量中的每一行对应一个线程块。列向量中的每一行只有1个元素,对...

2013-09-07 14:55:51

阅读数:2108

评论数:1

SSE2指令集系列之一----浮点运算指令

SSE2与SSE1使用相同寄存器,指令描述约定:   MM指64位MMX寄存器 XMM指128XMM寄存器 m32 指32位内存变量 m128指128位内存变量 本小结主要描述双精度浮点运算指令 1.  数据搬移指令     ...

2013-05-16 14:26:09

阅读数:1403

评论数:0

SSE4.1指令集系列之一----多字节绝对差值求和指令、水平最小值,整数格式扩展指令

本文要介绍的是SSE4.1指令集中的几条整数指令及其在视频编码中的应用。 1. 单指令32字节差分绝对值求和指令 MPSADBW     这条指令类似于SSE的PSADBW,但它实现的功能更强大。包括微软官方网站上对这条指令的说明都不是能够让人一目了然。下面这张图也许可以帮助我们理解:...

2013-04-23 12:22:52

阅读数:1272

评论数:0

SSE特殊指令集系列之二----字节绝对差值求和指令

本文要谈的是这样一条指令: PSADBW 这条指令是SSE1引入的用于视频编码绝对差值求和的指令。 在视频编码中的运动估计模块,一种常见的SAD代码如下: 1 // Get the SAD 16x16 macro block with full pixel 2 for (y = 0;...

2013-04-23 12:22:50

阅读数:1292

评论数:0

SSSE3指令集----水平加法指令饱和字节乘加指令以及字节重排指令

这里简要描述几个重要的算数运算指令。 1.  水平相加指令       SSSE3指令集增加的主要是针对整数进行水平方向上相加的指令,与SSE3的浮点指令类似。   phaddd   寄存器水平方向上按照无符号32位整数进行加法     phaddw     寄存器水平方向上按照无符...

2013-04-23 12:22:47

阅读数:1603

评论数:0

SSE3指令集系列----数据加载与算术运算指令

1. 数据加载存储指令        LDDQU  xmm, m128      从非对齐的内存地址中加载128位数到XMM寄存器,此条指令比SSE2的非对齐加载指令 MOVDQU 要快。     MOVDDUP xmm, xmm/m64    加载64bit数据到XMM寄存器的低64位...

2013-04-23 12:22:45

阅读数:916

评论数:0

SSE特殊指令集系列之一----各种数据重排指令

实际上,搞汇编优化的很多时间是在处理如何有效的组织数据,以适应并行计算指令的数据结构。 本小结描述的是数据混洗指令,这类指令使用起来相当的灵活。具体如下:      1.  shufps  XMM,XMM/m128,imm8(0~255)        描述:            从指...

2013-04-23 12:22:43

阅读数:1070

评论数:0

SSE2指令集系列之二----整数运算相关指令

本小节描述的是SSE2整数运算指令。 5. 数据搬移指令   movdqa XMM,XMM/m128         movdqa XMM/m128,XMM   把源存储器内容值送入目的寄存器,当有m128时,内存地址必须16字节对齐.   movdqu XMM,XMM/m128 ...

2013-04-23 12:22:41

阅读数:961

评论数:0

SSE指令集系列之三----整数运算指令

6. SSE整数运算指令   pavgb  MM,MM/m64       pavgb XMM,XMM/m128   把源存储器与目的寄存器按字节无符号整数相加,再除以2,结果四舍五入为整数放入目的寄存器。   源存储器为m128时,内存变量地址必须16字节对齐.     pavgw...

2013-04-23 12:22:39

阅读数:1327

评论数:0

SSE指令集系列之二----浮点与整数转换指令

4. 数据重排指令集   unpckhps XMM,XMM/m128   源存储器与目的寄存器高64位按双字交错排列,结果送入目的寄存器,内存变量必须对齐内存16字节.             高64位 | 低64位     目的寄存器:    a0 | a1 | a2 | a3    ...

2013-04-23 12:22:36

阅读数:971

评论数:0

SSE指令集系列之一----数据加载与浮点运算指令

SSE有8个128位独立寄存器(XMM1~XMM7),指令描述约定:      MM指64位MMX寄存器      XMM指128XMM寄存器      m32 指32位内存变量      m128指128位内存变量   1. 数据传送指令     movapsXMM,XMM/m12...

2013-04-23 12:22:34

阅读数:1382

评论数:0

MMX指令集系列之三----数据饱和压缩与重排指令

6. 数据压缩指令     packuswb MM,MM/m64    把目的寄存器按字有符号数压缩为饱和字节无符号数放入目的寄存器低32位,    把源寄存器字有符号数压缩为饱和字节无符号数放入目的寄存器高32位。    简单的说,就是16位有符号压缩为饱和8位无符号数。       ...

2013-04-23 12:22:32

阅读数:833

评论数:0

MMX指令集系列之二----移位运算和乘法指令

4. 数据移位指令   4.1 16位并行左移指令    psllw MM,MM/m64    psllw MM,imm8    把目的寄存器按字由源存储器(或imm8 立即数)指定位数逻辑左移,移出的位丢失.    低字移出的位不会移入高字.    例:    当MM0 = 0xf...

2013-04-23 12:22:29

阅读数:1237

评论数:0

MMX指令集系列之一----数据加载与算术运算指令

MMX指令有8个64位寄存器(MM0~MM7),不过可惜都是借的FPU的, FPU原来有8个80位寄存器(st(0)~st(7)),现在用在了MMX上,所以用之后要加上一条EMMS指令,用以复位. MMX寄存器有64位,可以同时进行8对字节或4对字或2对双字同时相同操作,还可以进行饱和运算,不会...

2013-04-23 12:22:25

阅读数:966

评论数:0

一种高精度低复杂度的非线性函数定点计算方法

摘要 在嵌入式系统中,由于没有浮点运算单元,当涉及浮点运算的时候需要做定点化处理。查表法是一种常用的方法。表的大小直接关系到计算的精度和复杂度。如何在计算精度和复杂度之间取得平衡,是一个重要的问题。本文根据泰勒公式重新设计了一种新的计算方法。这种方法具有很高的精度,而计算复杂度低,表的大小也很小。...

2013-04-23 12:22:09

阅读数:1953

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭