自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

音视频图像相关

音视频图像相关

  • 博客(56)
  • 资源 (7)
  • 收藏
  • 关注

原创 HEVC预测编码

以上这句话如何理解?如果对于只存在一个参考帧的情况col_pic和cur_ref是同一帧,如果存在多参考帧,则col_pic和cur_ref可能不是同一帧,举例说明,假如当前有5个短期参考帧,分别是当前帧的前五帧,假如不存在B帧,当前帧的帧号是100,那么这五个参考帧的帧号分别为95,96,97,98,99。所不同的是,AMVP的候选列表长度为2,且存在MVD。的PU,它有两个候选位置,如下图所示,最大的实线框为CTU,C3为col_pic中和cur_PU同位置的PU,H为C3所在的CTU的右下方的PU。

2024-04-07 11:14:03 17

原创 HEVC的编码结构

CTU(Coding Tree Unit)和CU组成了一个四叉树的层级结构,CTU的尺寸为64 x 64,32 x 32,16 x 16,一个CTU可以分为一个或四个CTU,对标H264的MB。CU/CBCU/CB(Coding Unit/Coding Block),CU为亮度和色度编码单元的统称,CB特指某一个分量的的编码单元。CU包括一个亮度编码块和两个色度编码块。CU为预测模式划分的最小单位,一个CU只能是一种预测模式,不是帧内或者帧间。

2024-03-21 15:01:26 34

原创 ffmpeg深度学习滤镜

运行过程中会出现一些错误,主要是因为代码中用的tensorflow api和环境中的tensorflow版本不匹配导致,修改接口名称即可解决,最终生成srcnn.pb文件。当前所用显卡为NVIDIA的P6000,在英伟达的官网上查看对应的驱动, 下载NVIDIA-Linux-x86_64-535.104.05.run并安装。通过[2]查看cuda和tensorflow的对应关系,下载对应版本的tensorflow.用nvcc --version查看,cuda的版本为11.8,下载。所用ffmpeg版本为。

2024-02-23 16:54:57 208

原创 ffmpeg 硬件加速介绍

参考[2],基于windows的硬件加速都是基于DirectX API,我们可以用ffmpeg -hwaccels查看当前环境支持的硬件加速接口,如下为windows上的执行ffmpeg --hwaccels的结果。

2024-02-20 10:17:29 291

原创 H264中的DCT变换和量化

下图为intra16x16 block的正向变换和反向变换过程,和非intra16x16 block相比,intra16x16 会进一步把这16个小块的DC分量再做哈达玛变换,然后再量化,所以对于每个小块中的16个系数,DC系数为先做DCT变换再做哈达玛变换的结果,15个AC系数为DCT变换的结果。反向变换和正向变换的顺序相反。反向变换为先对16个小块的DC分量做反哈达玛变换,然后再把每个小块的DC分量和它的AC分量放在一起,组成16个系数,然后对它再做反量化,接着IDCT,恢复block中的像素值。

2024-01-09 10:12:19 794

原创 ooura fft库

注意Real DFT的反变换和频域之间系数是2.0 / n.这点可以这样理解:因为Real DFT的时域信号都是实数,所以它的频率肯定是关于X轴对称的,因为只有这样才可以在Y轴上相互抵消。可以看出,和cdft的结果一致,剩下频率的关于中心对称,但是特殊的,刚好频域有64这个中间位置,而相位只存了前面一半的值,所以用rdft的话采样频率一半的相位信息无法获得。注意输入数据长度为N,只含有实部,因为fft后的输出关于X轴对称,所以数据量也减少一半,数据长度也为N,也是实部虚部实部虚部......,这样存放。

2023-12-27 09:19:00 847

原创 H264一致性

以下是Decoder侧CBP的大小随时间变化的趋势,因为有0.8秒的缓冲,所以在0.8秒时,CPB的大小为5000x0.8=4000,下来每隔0.2秒Decoder会解一帧数据。中,因为每一帧的大小是不固定的,所以可以认为进入Encoder Buffer的速率是不固定的,但是我们希望能够控制H264的码率,所以希望从Encoder Buffer出来,进入CPB的速度的恒定的,然后Decoder从CPB中取出码流进行解码,解码的数据放入DPB,Decoder可能还要用DBP中的数据进行参考。

2023-12-26 09:55:07 757

原创 x264中的线程池

x264的线程池定义在threadpool.h/threadpool.c中。

2023-12-22 16:52:51 854

原创 H264帧间预测

所以它们的MV分别乘以对应的权值,更新后的mv为(+3,-3)和(+1.5,-2.5),smv(+3,-3)将被传输,此时list1和list0对应的mv之差为(-1.5,0.5),这个mv也将被传输。还有一种情况是A,B,C的被划分成更小的partition,如下图中第二个图所示,那么A,B,C都取和E最接近的partition,A取E的相邻宏块的右上方的partition,B取E上方宏块左下方的partition,C取E右上方宏块的左下方的partition。多个参考帧的情况会增加DPB的存储量。

2023-12-20 16:23:22 821

原创 Slice和MB

CAVLC熵编码的都是按照4x4的块进行的,但是当transform_size_8x8_flag为1时,CAVLC的编解码需要8x8,所以解码时按照4x4解码,对一个8x8的块对应4个4x4的块,然后再把这4个4x4块的解码结果合成为一个8x8的块的结果,如上图红色框所示。至于4x4到8x8的合成方法,这里不做深入讨论,后面另起章节讨论。

2023-12-12 09:24:33 780

原创 H264帧内预测介绍

如果rem_intra4x4_pred_mode大于等于当前的最大可能模式,最终预测模式设置为rem_intra4x4_pred_mode + 1,所以f rem intra4×4 pred mode的取值范围是0-7,3bit就可以表示,再加上pre intra4x4 pred mode,一共4bit,所以如果most probable prediction mode 命中,能够节省3/4的码流,否则没有节省码流。,最终的预测模式为rem_intra4x4_pred_mode;为A,B预测模式的最小值。

2023-12-11 14:05:54 1038

原创 CAVLC(基于上下文自适应的可变长编码)

最后一个非零系数前0的个数如下面红色表示,total_zeros为330 01 -1 -10通过Table9.7通过total_zeros和TotalCoeffs=5,查表得编码结果为111.当前得编码码流为通过Table9-7可知,最后一个非零系数前0的数目为3 ,1 1110 1100。

2023-12-11 11:17:44 919

原创 JM中ref_pic_list_modification bug记录

我用一些码流分析工具播放H264码流正常,用一些播放器播放也都存在花屏,不过大多数播放器都是调用的ffmpeg接口,所以需要定位为何ffmpeg播放会报错。看到17这个数字就很敏感了,因为设置的Log2MaxFNumMinus4=0,所以码流中内部帧号16帧一个循环,再看第17帧的码流结构,ref_pic_list_reordering句法中,而有的解码器做了些容错机制,所以用码流分析工具播放未见问题,ffmpeg中是严格遵循协议的,所以会报此错误。的情况,max_pic_num为16。

2023-12-07 16:39:51 607

原创 poc_order_cnt_type

如果解码顺序和播放顺序一致(不存在B帧),最好用poc_order_type=2,这样最省码流,推导也方便。如果解码顺序和播放顺序不一致(存在B帧),poc_order_cnt_type为0最灵活,也好推导,但是码流大些,如果poc_order_cnt_type为1,码流会小些,但是灵活度不够,解码帧必须呈周期性的关系才可以。

2023-11-30 10:51:11 945

原创 Coded Block Pattern

Coded Block Pattern简称CBP,在H264协议7.3.2.1中有介绍,CBP表征了MB中的亮度和色度块的残差做DCT后的系数是否为0的情况,CBP可以拆分为CodedBlockLuma和CodedBlockChroma,分别对应亮度和色度块的残差系数是否为0,它们的具体含义后面会做介绍,首先我们要获取CodedBlockLuma和CodedBlockChroma,协议中规定根据MB type类型的不同获取CodedBlockLuma和CodedBlockChroma的语法也相同。

2023-11-24 15:22:58 891

原创 H264短期参考帧和长期参考帧

从以上例子看,解码器内部帧号的循环范围是16,也就是说,如果多个短期参考帧存在并且最远的短期参考帧和当前帧的实际帧号大于等于16,会造成参考帧列表顺序错乱。在解码端,如果当前帧号为13,有两个参考帧帧号分别为9,10,那么解码器认为帧号10距离当前帧较近,它排序参考帧列表为[10,9];在大多数的帧都没有问题,但是在个别帧的位置会发生参考帧列表中帧的顺序和预期不一致的情况,我在第28帧的两个参考帧为13帧和27帧,然后把27帧unused,但是当第29帧时参考帧列表为[13,28]。X264代码中定义的。

2023-10-18 10:11:36 270

原创 vbv介绍

VBV即Video Buffer Verifier(视频缓冲区校验器)。本质是encoder端的一个虚拟buffer,可以将VBV当做一个容量受限的管道,有一个上限容量值和下限容量值,在经过此管道的调节之后能限制编码码率在上限容量值和下限容量值之间。VBV对标NetEq中的那几个buffer(decoder buffer,algorithm buffer,sync buffer),也可以对标WebRtc中的video jitter buffer。

2023-10-18 10:03:30 399

原创 Open GOP 和close GOP

Close GOP是说在当前GOP中,所有的P帧和B帧只会参考GOP内部的I帧或P帧;而Open GOP是说当前GOP中的B帧会参考邻近GOP的I帧。因为GOP第一帧为IDR帧,会清空DPB,以下图Close GOP为例,当前GOP的最后一个frame为B帧,它要参考下一个GOP的I帧和它前面的P帧,所以要现对I帧编码,如果I帧为IDR帧,会把所有参考帧都清除,包括P帧,B帧没法参考P帧了,所以GOP的第一帧为IDR帧,它只能是Close GOP。

2023-10-08 09:37:06 174

原创 时域维纳滤波

时域维纳滤波介绍

2023-01-07 10:19:16 209

原创 NetEq(五) ---- 算法处理 expand

NetEq expnad的处理流程

2022-05-22 15:14:33 335

原创 NetEq(四)-算法处理(加速、减速、Merge)

NetEq的加速、减速,以及merge流程

2022-05-19 20:39:26 328

原创 NetEq(三) 算法处理(Normal)

如果经过前面介绍的决策判定,该帧需要正常播放,那么正常播放又分为以下几种情况:上一包是PLC (expand,丢包)需要计算平滑系数,使上一包和当前包"过渡自然".平滑系数计算:D为解码后的数据,即input中的数据,BNG为背景噪声(用默认的初始值)。muteFactor为expand中的muteFactor,64即为8ms数据。const int fs_mult = fs_hz_ / 8000; size_t energy_length = std:

2022-05-17 21:57:19 392

原创 NetEq(二) 决策判定

NetEq 决策判定

2022-05-05 20:50:22 463

原创 NetEq(一) 延迟估计

NetEq之延迟估计

2022-05-05 20:44:24 1007 2

原创 C++多线程detach函数使用

多线程中detach的使用

2021-12-30 09:24:15 10807 4

原创 keras自定义监控变量

keras自带的监控变量就是mse,mae等,有时我们想自定义监控的变量,比如学习率,或者其它一些我们自定义的参数,keras自定义监控变量和自定义损失函数很类似,都是通过这个类似内部函数的方式,例如监控学习率。# 监控学习率def get_lr_metric(optimizer): def lr(y_true,y_pred): return optimizer.lr return lroptimizer = keras.optimizers.adam(lr=1

2020-09-17 10:08:33 428

原创 Keras自定义损失函数,多个输入

Keras默认的自定义损失函数参数形式固定,一个为y_true,另一个为y_pred例如:def myloss(y_true,y_pred): pass# 自定义损失函数def myloss(y_true,y_pred,neighbor_Y): lamb1 = 0.7 lamb2 = 0.3 loss1 = K.mean(K.square(y_pred - y_true)) neighbor_Y = Reshape((3,))(neigh.

2020-09-14 16:42:05 1677

原创 打印Keras模型权值

# define modelmodel.load_weights(modelname)weights = model.get_weights()for lay in model.layers:with open('./model_weights.txt','a+',encoding='utf-8') as f:f.write(lay.name + '\n')f.write('shape:' + str(lay.get_weights().shape) + '\n')f.write(str(l.

2020-09-09 10:33:16 464

原创 tesstrain

为什么要使用tesstrain Tesseract固然很方便,便于使用,在开源OCR识别项目中属于翘楚。但是它也有局限,即tesseract4.0以后,图片样本都是自动生成的,根据开发者设置的字体,自动生成,然后加些噪声,干扰等,但是实际情况下,我们可能是有大量的文字图片,需要把我们手头的图片做为数据集,这个时候有另一个开源项目tesstrain可以供我们使用。 tesstrain如何使用 tesstrain github地址为https://github.co...

2020-07-25 16:26:10 447

原创 让人郁闷的random.shuffle

最近因为自己的疏忽,出现了一个比较严重的问题,让我查了好几天,最后才发现问题,原来主要问题我用了random.shuffle,强力建议大家以后少用random.shuffle,尽量用numpy.random.shuffle。我本来是想把训练样本打乱,然后划分测试集和训练集,我用了random.shuffle,结果杯具了,分类效果非常好,好的我无法相信,最后我反复排查,原来是用random.shuffle打散出了问题。我做了个实验:a = np.arange(1,10).reshape(-1,3)

2020-07-25 16:23:48 339

原创 Darknet安装

https://pjreddie.com/darknet/可以看到darknet优点,便于使用,封装性好,也提供了OPENCV,GPU的支持。安装及其方便。1.Github上下载代码。2.make ( 暂时先不改Makefile,默认没有GPU加速)3.执行./darknet detect ./cfg/yolov2-tiny.cfg ./yolov2-tiny.weights./data/dog.jpg命令行上可以看到结果同时也看到结果。...

2020-06-04 18:09:51 166

原创 QT相关环境问题

最近做项目用QT遇到一些环境方面问题,这里整理下,后续补充,希望对大家有所帮助。error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl AboutDlg::metaObject(void)const " (?metaObject@AboutDlg@@UEBAPEBUQMetaObject@@XZ)...

2020-04-07 15:24:16 327

原创 Tensorflow-gpu环境搭建

前几天重装了系统,把以前的TensorFlow环境也要重新搭建了,这下还费了些功夫,真不知道我以前是怎么稀里糊涂把环境搭建好的,这里记录下,希望能够大家些帮助。1. 安装Anaconda 我这里用的是Anaconda3-5.1.0-Windows-x86_64.exe版本。2.安装pycharm pycharm-community-2018.2.4.exe3.安...

2020-03-31 15:57:17 111

原创 比较两幅图像相似性--基于pHash算法

void perceptron_code(Mat src, int w, int h, int* result){ src.convertTo(src, CV_32F, 1.0 / 255); Mat grayDCT; dct(src, grayDCT); grayDCT = grayDCT.rowRange(0, h).colRange(0,w); ...

2020-03-09 13:34:33 389

原创 比较两幅图像相似性-基于HOG特征

下面是基于HOG特征的判断两幅图像相似度代码,代码原理很简单,比较两幅图像的HOG特征相关性。vector<float> extract_hog_features(Mat& image);float calculate_relation(vector<float>,vector<float>);int main(int argc,char...

2020-03-06 10:01:12 3784

原创 VGSL 介绍

VGSL是Variable-size Graph Specification Language的缩写,它定义了一种语法规范,用来表明你用Tesseract-OCR训练时的网络参数。听起来有些迷糊,容我慢慢道来。Wiki上给出的重头开始训练模型的命令为lstmtraining --debug_interval 0 \--traineddata ~/tesstutorial/engtra...

2020-03-04 18:09:01 456

原创 主窗口和plugin之间的交互

在Winform的开发中,主窗口和plugin之间的数据交互主要有两种情况, 通过注册方式 比如在主窗口中用户进行了某些操作,例如选择了checkbox,只要注册过的plugin都可以收到该消息。伪代码如下:// 公用接口namespace XXXXXXXX{ public interface IHandler { ...

2020-03-04 16:15:39 131

原创 不同的Chinese traineddata区别

关于Chinese traineddata有至少如下几个: chi_sim chi_sim_vert chi_tra 它们之间的区别如何? chi_sim 包含了简化的常用的汉语和英文字符。 chi_tra 包含了繁体的常用汉语和英文字符。 chi_sim_vert是简体的常用汉语和英文字符,但是书写方向是从上到下。可以参考https://...

2020-02-25 10:59:10 4713

原创 证件照换背景色

证件照替换背景色是一个很常用的功能,原理其实很简单,其实是一个图像分割问题,找到图像背景区域,然后替换成新的背景,注意最后要在人物边缘做羽化处理,使其看起来过度自然,这里用多种图像分割方法实现。K-Meansint main(int argc, char ** argv){ Mat src = imread("./demo.jpg", IMREAD_COLOR); // ...

2020-02-16 11:17:16 649 2

原创 如何提高图片质量

使用Tesseract-OCR进行字符识别,输入的图片质量对识别的结果有着至关重要的影响。以下是Tesseract官网上提到的提高图片质量的方法https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality大致方法有:1.二值化2.去除噪声3.旋转,字体摆正4.去除纸张边界所有这些都是考验你图像处理基本功底是...

2020-01-21 10:22:07 2274

WebRtc实时音视频介绍

WebRtc实时音视频介绍

2024-04-15

⾯向不可靠传输⽹络的抗丢包编解码器

⾯向不可靠传输⽹络的抗丢包编解码器

2024-04-08

⽹⻚端实时⾳视频服务架构与实践

⽹⻚端实时⾳视频服务架构与实践

2024-04-08

怎样支持万人直播教室,值得一看

怎样支持万人直播教室,值得一看

2024-04-08

微信对网络影响的技术试验及分析

微信对网络影响的技术试验及分析

2024-04-08

视频编码未来简史,值得一看

视频编码未来简史,值得一看

2024-04-08

实时⾳视频质量评估与监控

实时⾳视频质量评估与监控

2024-04-08

即时通信原理和技术,值得学习

即时通信原理和技术,值得学习

2024-04-08

SIFT算法经典论文,值得一看

SIFT算法经典论文,值得一看

2024-04-02

邹博机器学习 - 聚类实践

邹博机器学习 - 聚类实践

2024-04-01

邹博机器学习 - - 聚类讲义

邹博机器学习 - - 聚类讲义

2024-04-01

邹博机器学习 - SVM实践

邹博机器学习 - SVM实践

2024-04-01

邹博机器学习讲义-回归

邹博机器学习讲义-回归

2024-04-01

Bjøntegaard Delta (BD): A Tutorial Overview ofthe Metric, Evolu

Bjøntegaard Delta (BD): A Tutorial Overview of the Metric, Evolu

2024-03-26

机器学习讲义整理,希望对大家有所帮助

机器学习讲义整理,希望对大家有所帮助

2024-01-16

EPZS算法介绍,供大家参考

EPZS算法介绍,供大家参考

2024-01-08

Elements of Information Theory 2nd

Elements of Information Theory 2nd

2023-12-29

数字图像与视频处理相关

数字图像与视频处理相关

2023-12-28

计算机+链接器和加载器

计算机+链接器和加载器

2023-12-28

cloud-computing-quicksync-video-ffmpeg-white-paper

cloud-computing-quicksync-video-ffmpeg-white-paper

2023-12-27

深入理解视频编解码技术基于H.264标准及其参考模型

深入理解视频编解码技术基于H.264标准及其参考模型

2023-12-27

新一代视频压缩编码标准H.264-毕厚杰

新一代视频压缩编码标准H.264-毕厚杰

2023-12-27

Tesseract 3.X 训练合并模型文件批处理

Tesseract 3.x训练合并模型文件,注意所有的模型文件和box文件,还有这个bat文件都在同一个目录下,且事先创建好font_properties 文件,注意font_properties文件必须是UTF-8编码

2019-03-13

uc-OS 2源码公开的实时嵌入式操作系统

《uc-OS 2源码公开的实时嵌入式操作系统》所带光盘内容

2010-03-07

纹理图像的标准库,基本是全的

搜集纹理图像的标准库,基本是齐全的,希望对做纹理分析的同学有些作用,谢谢

2010-02-20

Arm初学资源的整理

Arm初学资源的整理,希望对大家有用,谢谢

2010-02-07

ARM开发工程师入门宝典

ARM开发工程师入门宝典,对初学者有一定的帮助,希望对大家有用

2009-05-10

WCDMA 缩略语

WCDMA缩略语,大家看协议时对不明白的缩略语可以查看,希望对大家有用

2009-05-10

WCDMA PPT和电子书

关于WCDMA的一些书和PPT,希望对大家有用

2009-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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