- 博客(29)
- 资源 (10)
- 收藏
- 关注
原创 傅里叶变换的物理意义
假设信号的采样频率是Fs,信号的频率是F,采样点数为N,则与傅里叶变换相关概念几个计算公式如下:1. 频率计算公式 2. 振幅计算公式 Magnitude
2013-04-24 11:11:03 2253
原创 移植FFMPEG到VS2008系列之四
这部分主要是引入第三方库,还有就去去除无关的测试代码。7. 引入第三方库 必须引入的第三方库为zdll.lib,这个库在网上可以下载到,如若不加入这个库,很多的函数将链接不到。还有在avcodec文件夹下面以lib打头的文件都是为引入第三方库而进行的接口封装,以适应ffmpeg去调用的相关代码。最重要的例如libx264,libmp3lame.lib libfdk_a
2013-04-23 17:34:43 2122 7
原创 移植FFMPEG到VS2008系列之三
5. 排除编译错误。 这部分主要是修改C99的语法,常见的不兼容语法如下:5.1 例如在文件av_codec_4xm.c最后的结构体初始化代码如下:AVCodec ff_fourxm_decoder = { .name = "4xm", .type = AVMEDIA_TYPE_VIDEO, .id
2013-04-23 16:02:49 2014 2
原创 移植FFMPEG到VS2008系列之二
前面我们已经把文件重命名了,准备好了代码之后就是把代码添加到vs2008开发环境中来。3. 创建工程添加文件。 创建新的空的控制台工程,把所有的文件都添加进来。有几个文件夹下面的文件不用添加,主要有compat,libavdevice,tools。要注意的是子目录x86下面的c文件也需要添加进来。 上图之中test文件夹里面有些文件是自己添加的,它们是con
2013-04-23 15:29:34 2268
原创 移植FFMPEG到VS2008系列之一
做音视频编解码的人都知道ffmpeg。然而,要想在windows上调试ffmpeg却不是一件容易的事情。之前也曾经把x264的代码移植到vs2008上面,具体可以参见我前面的文章。最近终于把ffmpeg的最新代码完全移植到vs2008环境中来。在移植过程中深深的感觉到codec的多样性,我虽然在codec领域工作了很多年,但是ffmpeg里面大多数codec甚至连名字都没有见过。下面把移植过程中需
2013-04-23 14:31:33 3036 1
原创 SSE4.1指令集系列之一----多字节绝对差值求和指令、水平最小值,整数格式扩展指令
本文要介绍的是SSE4.1指令集中的几条整数指令及其在视频编码中的应用。1. 单指令32字节差分绝对值求和指令 MPSADBW 这条指令类似于SSE的PSADBW,但它实现的功能更强大。包括微软官方网站上对这条指令的说明都不是能够让人一目了然。下面这张图也许可以帮助我们理解: 这条指令的灵活之处在于源操作数和目的操作数的位置都是可选的。如何选择关键在于
2013-04-23 12:22:52 1640
原创 SSE特殊指令集系列之二----字节绝对差值求和指令
本文要谈的是这样一条指令:PSADBW这条指令是SSE1引入的用于视频编码绝对差值求和的指令。在视频编码中的运动估计模块,一种常见的SAD代码如下:1 // Get the SAD 16x16 macro block with full pixel2 for (y = 0; y 16; y++)3 for(x = 0; x 16; x++)4 sad +=
2013-04-23 12:22:50 1695
原创 SSSE3指令集----水平加法指令饱和字节乘加指令以及字节重排指令
这里简要描述几个重要的算数运算指令。1. 水平相加指令 SSSE3指令集增加的主要是针对整数进行水平方向上相加的指令,与SSE3的浮点指令类似。 phaddd 寄存器水平方向上按照无符号32位整数进行加法 phaddw 寄存器水平方向上按照无符号16位整数进行加法 phaddsw 寄存器水平方向上按照16位整数进行饱和加法
2013-04-23 12:22:47 2830
原创 SSE3指令集系列----数据加载与算术运算指令
1. 数据加载存储指令 LDDQU xmm, m128 从非对齐的内存地址中加载128位数到XMM寄存器,此条指令比SSE2的非对齐加载指令MOVDQU 要快。 MOVDDUP xmm, xmm/m64 加载64bit数据到XMM寄存器的低64位,同时复制到其高64位。 MOVSHDUPxmm, xmm/m128 只需复制
2013-04-23 12:22:45 1274
原创 SSE特殊指令集系列之一----各种数据重排指令
实际上,搞汇编优化的很多时间是在处理如何有效的组织数据,以适应并行计算指令的数据结构。本小结描述的是数据混洗指令,这类指令使用起来相当的灵活。具体如下: 1. shufps XMM,XMM/m128,imm8(0~255) 描述: 从指令后缀来看,这是一条SSE1指令。 该指令把源存储器与目的寄存器按双字32位划
2013-04-23 12:22:43 1825
原创 SSE2指令集系列之二----整数运算相关指令
本小节描述的是SSE2整数运算指令。5. 数据搬移指令 movdqa XMM,XMM/m128 movdqa XMM/m128,XMM 把源存储器内容值送入目的寄存器,当有m128时,内存地址必须16字节对齐. movdqu XMM,XMM/m128 movdqu XMM/m128,XMM 把源存储器内容值送入目的寄存器,内存地址
2013-04-23 12:22:41 1454
原创 SSE指令集系列之三----整数运算指令
6. SSE整数运算指令 pavgb MM,MM/m64 pavgb XMM,XMM/m128 把源存储器与目的寄存器按字节无符号整数相加,再除以2,结果四舍五入为整数放入目的寄存器。 源存储器为m128时,内存变量地址必须16字节对齐. pavgw MM,MM/m64 pavgw XMM,XMM/m128 把源存储器与目的寄存器按字无符
2013-04-23 12:22:39 2190
原创 SSE指令集系列之二----浮点与整数转换指令
4. 数据重排指令集 unpckhps XMM,XMM/m128 源存储器与目的寄存器高64位按双字交错排列,结果送入目的寄存器,内存变量必须对齐内存16字节. 高64位 | 低64位 目的寄存器: a0 | a1 | a2 | a3 源存储器: b0 | b1 | b2 | b3 目的寄存器结果: b0 | a0
2013-04-23 12:22:36 1297
原创 SSE指令集系列之一----数据加载与浮点运算指令
SSE有8个128位独立寄存器(XMM1~XMM7),指令描述约定: MM指64位MMX寄存器 XMM指128XMM寄存器 m32 指32位内存变量 m128指128位内存变量 1. 数据传送指令 movapsXMM,XMM/m128 movaps XMM/m128,XMM 把源存储器内容值送入目的寄存器,当有m128时
2013-04-23 12:22:34 4034
原创 MMX指令集系列之三----数据饱和压缩与重排指令
6. 数据压缩指令 packuswb MM,MM/m64 把目的寄存器按字有符号数压缩为饱和字节无符号数放入目的寄存器低32位, 把源寄存器字有符号数压缩为饱和字节无符号数放入目的寄存器高32位。 简单的说,就是16位有符号压缩为饱和8位无符号数。 高32位 | 低32位 目的寄存器:
2013-04-23 12:22:32 1384
原创 MMX指令集系列之二----移位运算和乘法指令
4. 数据移位指令 4.1 16位并行左移指令 psllw MM,MM/m64 psllw MM,imm8 把目的寄存器按字由源存储器(或imm8 立即数)指定位数逻辑左移,移出的位丢失. 低字移出的位不会移入高字. 例: 当MM0 = 0xffff ffff ffff ffff, 执行psllw MM0,1 则MM0 = 0xff
2013-04-23 12:22:29 1967
原创 谈谈偏微分方程在图像特效中的应用
在很早之前,iOS上有这样一款软件叫Pimple Eraser,它实现的功能非常简单,就是把人脸中的痘痘给去掉,而且效果很不错。当然你得手动的选择痘痘的位置和大小。不过可惜的是,这款软件的交互做的不是很好。大约一年之后,美图秀秀新的版本也实现了同样的功能,而且它的人机交互功能做得比 Pimple Eraser好的多,由此成为美图秀秀新的亮点。与此类似,百度魔图其实早就有这一功能,不过他们做出来的效
2013-04-23 12:22:27 2094 3
原创 MMX指令集系列之一----数据加载与算术运算指令
MMX指令有8个64位寄存器(MM0~MM7),不过可惜都是借的FPU的, FPU原来有8个80位寄存器(st(0)~st(7)),现在用在了MMX上,所以用之后要加上一条EMMS指令,用以复位.MMX寄存器有64位,可以同时进行8对字节或4对字或2对双字同时相同操作,还可以进行饱和运算,不会溢出,当然也可以进行普通运算.特别要注意的一点是:在x86上,一个字,WORD的长度是16位,而在
2013-04-23 12:22:25 1275
原创 谈谈自动瘦脸和自动眼睛放大算法
目前,手机上各种图片特效的软件应用App盛行,典型的如camare360,美图秀秀,powercalm等。上述图像特效软件最初发布的版本的特效实现基本上是基于调色的技术,在后续发布的版本中有少量的比较好的算法。 不过,最具技术含量的还是虹软的perfect365,perfect365在其发行的第一个版本中就实现人脸五官的定位,并在此基础上实现了自动眼睛放大,自动瘦脸等一些列涉及人脸
2013-04-23 12:22:23 12230 9
原创 数字图像去雾快速算法
1.简介。 严格的来说,去雾也是对比度增强的一种。但是用常见的对比度增强以及直方图均衡的算法根本达不到良好的效果。这方面最近比较好的工作就是He kaiming等提出的Dark Channel方法。这篇论文也获得了2009的CVPR最佳论文奖。 文章标题: single Image Haze Removal Using Dark Channel Prior。2. 暗
2013-04-23 12:22:20 6503 7
原创 基于AdaBoost的人脸检测
人脸检测和人脸识别都是属于典型的机器学习的方法,但是他们使用的方法却相差很大。对于人脸检测而言,目前最有效的方法仍然是基于Adaboost的方法。在网上可以找到很多关于Adaboost方法的资料,但基本上是千篇一律,没有任何新意。给初学者带了很多不便。建议初学者只需要认真阅读:北京大学 赵楠 的本科毕业论文 :基于 AdaBoost算法的人脸检测 这篇毕业论文就够了。作者详细分析了Adaboo
2013-04-23 12:22:18 2557 1
原创 数字图像偏色检测及其校正快速实现
本人参考下面的文献实现了自己的偏色检测:测控技术2008 徐晓昭等 基于图像分析的偏色检测及颜色校正方法 1. 偏色检测 在我的实现中,通过分析上述文献的思路,认为文献中的公式4有问题。 我的实现中,没有采用上述文献中的公式4,而是用另外的方法计算偏色因子K的值。这种修改可能与所实现的RGB到LAB空间转换的有关系。 我测试过openCv的rgb2lab的
2013-04-23 12:22:16 4876 2
原创 快速高斯滤镜算法
高斯滤波是很多图像处理算法中最关键性的一个中间步骤,实现快速高斯滤波算法具有很重要的意义。 通过拜读前辈们关于高斯滤波快速算法的相关文献,实现了自己的快速高斯滤波算法,并用NEON指令加速了将近6倍。1. 均值滤波逼近高斯滤波 这种算法优点是简单。一般可以通过3次均值滤波就可以逼近高斯滤波的效果。当然,如果需要的精度更高,则需要更多次的均值滤波。简单均值滤波
2013-04-23 12:22:14 3460
原创 人脸美化
经过我长达半年时间的预研与优化,我的美白磨皮算法基本上可以拿来商用了。测试图片的效果表明,我的美白磨皮的算法已经超过ios上各类图像特效软件的处理结果。先来看我用openCv做的demo: 算法有4个可调的参数,用以控制细节,由于可调的参数太多,导致openCv的主窗口没法显示全部的图像。可以来看一下处理之前后的对比图像: 处理之前: 美白磨皮之后:
2013-04-23 12:22:11 9857 16
原创 一种高精度低复杂度的非线性函数定点计算方法
摘要 在嵌入式系统中,由于没有浮点运算单元,当涉及浮点运算的时候需要做定点化处理。查表法是一种常用的方法。表的大小直接关系到计算的精度和复杂度。如何在计算精度和复杂度之间取得平衡,是一个重要的问题。本文根据泰勒公式重新设计了一种新的计算方法。这种方法具有很高的精度,而计算复杂度低,表的大小也很小。 引言在多媒体数字信号处理中,经常要涉及一些非线性函数的计算。例如求开方,非整数幂次运算,
2013-04-23 12:22:09 2870
原创 移植x264到vs2008之二
这里讲的是如何把汇编语言添加进来,而不是跑C代码。1. 首先,要下载到yasm这个汇编语言编译工具,其编译命令可以在vs开发环境当中统一添加为如下格式:yasm.exe -I..\common\x86\ -f win32 -O2 -DPREFIX -o "$(IntDir)\$(InputName)".obj "$(InputPath)"注意:如果你的yasm的版本比较老,可能会有一些
2013-04-23 12:22:07 1332
原创 会声会影手翻相册制作要点
看别人的会声会影视频教程看着非常的累,自己总结了下制作要点。这个过程完全可以自己编写一个简单的程序去实现。需要用到3条覆叠轨总共需要6张照片,图片必须是PNG格式,并且事先经过PS处理成一半是透明的格式,一般采用右半部分是透明的。起始翻转只用到2张照片,翻转结束的时候也是2张照片;故这个时间区间只用到2条覆叠轨最下面一条覆叠轨处理翻转的动画中间一条覆叠轨用于翻转之后的照片
2013-04-23 12:22:05 1727
原创 会声会影旋转木马制作要点
看别人的会声会影视频教程看着非常的累,自己总结了下制作要点。这个过程完全可以自己编写一个简单的程序去实现。1. 总共需要6张照片,图片必须是PNG格式,并且事先经过PS处理成一半是透明的格式,一般采用右半部分是透明的。照片的编号一次为P1到P6.2. 需要用到6条覆叠轨,第一条覆叠轨上需要用到11张照片,第二条覆叠轨上需要用到9张照片,依次类推,第六条覆叠轨则只要1张照片。照片在覆叠轨上呈
2013-04-23 12:22:03 2009
原创 数字音乐均衡器
很多音乐播放软件都有均衡器,例如千千静听的数字均衡器效果如下:这是一个10段均衡器。 均衡器实际上就是一组带通滤波器。对于学过数字信号处理的人,要设计这样一组滤波器并不是什么难事情。这里我做了一个简单的均衡器,这个均衡器只有3段,即对低频,中频和高频进行调整。 1. 均衡器相关结构定义如下: 1 typedef struct 2 { 3 // Fil
2013-04-23 12:22:00 2716
GPU高性能编程CUDA实战代码
2013-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人