小编Ale*_*x I的帖子

块运动补偿编码器 - 如何处理参考帧中的块噪声?

我不熟悉视频压缩,但目前正在使用H.264压缩残留图像的项目

我的问题更多是关于视频编码器的一般性质.据我所知(正如维基百科所解释的那样),块运动补偿编码器将当前帧划分为一些非重叠块,对于每个块,它在当前块来自的参考帧中进行检查,然后计算出它的差异.期望的块和运动补偿块,然后以某种方式对该残差进行编码.

维基百科指出:"块运动补偿的主要缺点是它会在块边界处引入不连续性(块效应).这些伪像以锐利的水平和垂直边缘的形式出现,很容易被人眼发现并产生振铃效果(用于残差帧的变换编码的傅里叶相关变换中的高频子带中的大系数.

因此,由于参考帧已经包含块伪像(因为它被编码),然后这些块伪像被移位到当前块并且计算残差,然后由边界处的块伪像创建的高频.移位块也将显示为残差中的不连续性.并且不连续性通常对压缩不利.

在压缩残差之前,运动补偿块编码器是否以某种方式处理此块伪像?因为它确切地知道块是如何移位的,所以它知道块边界的位置,并且可以在编码残差之前或期间对它们做些什么,在这个地方移除/忽略不必要的高频.如果在像H.264这样的编解码器中执行这样的事情,有人可以解释编码器如何做到这一点的主要概念,给它一些术语等等吗?编码器如何处理参考帧中的块伪像?

compression video encoding video-encoding

6
推荐指数
1
解决办法
442
查看次数

添加C文件会导致pch错误

我有一个XCodeobjective-C文件的项目.如果我添加一个新的(空)C file并尝试构建,我会在ProcessPCH步骤中构建预编译头时立即收到大量错误.错误是"致命错误:无法构建模块'基础'",并且Foundation.h找不到任何东西.删除C文件,然后再次构建.发生了什么,以及如何解决它?

(XCode 5.0,OSX 10.8.4)

编辑我已经尝试了清洁和清洁构建文件夹,没有任何影响.

编辑设置Precompile prefix header = No导致一堆语法错误,比如NSObject.h(和其他Foundation框架头文件).

编辑用户Cy-4AH想出来:需要#ifdef __OBJC__围绕整个 pch文件.

c xcode objective-c

6
推荐指数
1
解决办法
9874
查看次数

读取视频文件时,OpenCV内存不足

cv2.VideoCapture在python OpenCV中使用文件读取视频的示例内存不足:

import cv2
cap = cv2.VideoCapture('file.mp4')
while True:
    ret, frame = cap.read()
Run Code Online (Sandbox Code Playgroud)

它以1920x1080分辨率需要300帧才能用完。在OpenCV 3.0.0 beta和2.4.8中进行了测试,并在Windows 7 64位版本的最新Pythonxy中运行。

需要在此代码中添加什么以使其不耗尽内存,而是在读取下一帧之前释放每个帧?

python video opencv

6
推荐指数
1
解决办法
1393
查看次数

最大限度地减少加载多对多关系的性能问题

我一直在想象一个非常大的语料库.每个Unigram可以多次出现在多个注释中.我将Comment.ids存储在一个列表中,该列表附加到数据库中的Unigram,每250K新计算的unigrams左右.我想知道的是,如果有一种方法可以扩展注释ID列表 - 或类似的数据结构 - 而无需查询和加载与Unigram绑定的现有注释列表(它可以在数千个中编号).或者缓慢的IO没有办法吗?

这是我的型号代码:

comments = db.Table('ngrams',
    db.Column('unigram_id', db.String, db.ForeignKey('comment.id')),
    db.Column('comment_id', db.String, db.ForeignKey('unigram.id')))

class Unigram(db.Model):
    id = db.Column(db.String, primary_key=True, unique=True)
    times_occurred = db.Column(db.Integer)
    occurs_in = db.relationship('Comment', secondary=comments,
                    backref=db.backref('unigrams', lazy='dynamic'))

class Comment(db.Model):
    id = db.Column(db.String, primary_key=True, unique=True)
    creation_time = db.Column(db.DateTime)
Run Code Online (Sandbox Code Playgroud)

以及在以下位置添加新计数和Comment.ids的代码:

current = Unigram.query.filter(Unigram.id == ngram).first()
if current:
    current.times_occurred += counts[ngram]['count']
    current.occurs_in.extend(counts[ngram]['occurences'])
else:
    current = Unigram(ngram, counts[ngram]['count'],
                  counts[ngram]['occurences'])
    db.session.add(current)
Run Code Online (Sandbox Code Playgroud)

python sql orm many-to-many flask-sqlalchemy

6
推荐指数
1
解决办法
1100
查看次数

如何对C库进行逆向工程?

假设我在Linux上有一个动态库(.so).我还有一个使用该库的现有应用程序.图书馆被剥离了.我想为库生成一些(近似的)头文件,以便我可以编写另一个使用它的程序.

使用objdump来查看库中的函数是很容易的,并且ltrace可以查看正在进行的每个调用.

我如何弄清楚函数参数是什么?

一些想法:我可以使用LD_PRELOAD或dlsym类型技巧来加载一个shim库,它可以在原始库中调用任何函数时查看堆栈.我也可能在转储寄存器的垫片中做一些事情(这是在ARM上,所以我认为它是r0-r3).有了更多的工作(通过查看反汇编),有可能还可以确定寄存器是否包含将被解除引用的指针,然后让shim函数转储该指针处的内容.

从那里开始似乎是一个很大的步骤"这个函数将第一个参数作为带有以下字段的struct的指针......"是否有任何自动化工具可用于此类事情?

注意:我对函数的工作方式一无所知,只关注如何为它们提供正确的数据.

c dll reverse-engineering disassembly

6
推荐指数
1
解决办法
2009
查看次数

如何将数据从经典蓝牙设备传输到iOS?

我正在为iOS编写一个需要从蓝牙设备接收数据的应用程序(经典蓝牙,而不是BLE).如果可能的话,我需要一个非常快速的数据传输,1Mbit/s或更快.这已经在Android中使用SPP.

Apple仅支持此处列出的一些蓝牙配置文件:https://support.apple.com/en-us/HT204387我认为这些配置文件是唯一受支持但不在MFi计划中的配置文件.MFi太难处理,所以我真的想避免它.SPP当然不可用.

在这些配置文件中,PAN和A2DP和HFP似乎可用于批量数据传输.A2DP或HFP将是一个黑客,因为它们实际上不是为非音频数据而设计的.这似乎离开了PAN.

iOS应用如何使用PAN从传统蓝牙设备传输数据? 我希望应用程序能够连接并以某种方式建立数据连接.这可能是通过IP(如使用PAN进行网络共享或反向网络共享)或非IP.我想要的东西与SPP配置文件非常相似,换句话说就是双方之间的双向串行链接.

注意:另一方面的蓝牙设备可以执行任何需要的操作(我使用蓝牙堆栈同时编写设备固件,可能是TI双模堆栈).额外奖励,如果你能给我一个使用任何蓝牙堆栈(TI,Synergy,dotstack等)的PAN网络共享的例子.

另请参阅:可以通过iOS中的蓝牙PAN与系留设备进行通信

bluetooth ios core-bluetooth

6
推荐指数
0
解决办法
808
查看次数

使用git进行审批流程?

我在一个受监管的环境中工作,在该环境中,软件更改需要由特定人员或角色进行特定签名。目前,这是使用git进行版本控制,并在git之外跟踪批准。

我想看看是否有一种方法可以在git中进行批准。如果有一个仅基于github的解决方案(基于github的fork和fork的pull请求,或github的代码评论等),那也将很有趣。

所需的特定元素是:

  • 批准的东西应该很容易找到(git log)并且可以证明,其方式等同于Docusign或电子签名。例如,使用代码签名密钥进行签名即可。

  • 每段代码可能需要一个以上的人批准(可能有每个项目的列表,也可能是逐案的)

  • 非常希望能够一次批准更大的变更集(拉请求,分支合并等),而不仅仅是一次提交。

  • 除非有适当的批准,否则能够防止某些动作(合并到母版/制作发行标签等)是合乎需要的,但不是必须的。

我知道git具有签字功能,可以用于我描述的功能吗?

编辑感谢您提供所有答案...从其中一些的方向看来,我应该澄清一下。我的目标主要是轻松地收集有关何时批准人员的信息(以及来自代码审查的更详细的信息),而不是自动执行策略(尽管这也很好)。在这种情况下,所有贡献者都在同一个组织内,可以被认为是受信任的,并且(通常)可以做正确的事情。只是现在的过程是手动的,非常缓慢,而且容易出错。让您有个主意:对于每个提取请求,我们都会创建几个MS Word文档,并将它们放在Docusign中以进行签名...

git github release-management

6
推荐指数
1
解决办法
2241
查看次数

Blaze中的"合成尺寸"是什么?

Blaze自述文件(此处为https://github.com/ContinuumIO/blaze)描述了对NumPy的一些改进,包括"合成维度".我四处搜寻但一直无法找到它们是什么.

有人可以开导我吗?

谢谢.

python numpy blaze

5
推荐指数
1
解决办法
373
查看次数

我的纱线朝哪个方向?

我有图像处理问题.我有纱线的照片:

纱线:)

单个股线部分(但不是完全)对齐.我想找到它们对齐的主要方向.在示例图像的中心,该方向与水平方向成约30-34度.结果可以是整个图像的平均/中值方向,或者仅是每个局部邻域中的平均值(产生局部方向的矢量图).

我尝试过:我以小步(1度)旋转图像,并在旋转图像的垂直方向与水平方向上计算统计数据(例如:求和行或求和列的标准偏差).我推断,当股线完全垂直或精确水平定向时,统计数据的差异最大,因此旋转角度是原始图像中的正确方向.但是,对于我尝试过的至少几种统计属性,这不起作用.

我进一步认为也许这不起作用,因为在整个图像中同时有太多不同的方向,所以我在一个小社区里厌倦了.在这种情况下,总有一个非常明确的首选方向(每个居委会不同),但它不是使纤维的方向真的去...我可以张贴我的样本代码,但它基本上是无用的.

我一直认为整个图像必须有某种简单的线性代数/统计特性,或者从2D FFT中得到的一些值可以一步给出正确的方向......但是如何?

什么可能不起作用:检测单根纤维.它们不一定是相同的颜色,并且图像可以从浅到深变暗,因此边缘检测器不能很好地工作,并且图像有时甚至可能不会聚焦.因此,甚至不可能总是看到人类的单根纤维(参见示例中的右上角),它们必须在统计意义上被检测为优选方向.

opencv image fft image-processing feature-detection

5
推荐指数
1
解决办法
1134
查看次数

iOS 中的蓝牙配对:如何判断是否会出现配对对话框?

我正在使用 Apple 的 Core Bluetooth 示例代码(此处稍作修改)来扫描低功耗蓝牙设备并连接到我想要的设备。在第一次连接时,这会显示 iOS 配对对话框。此外,如果设备被遗忘,然后被扫描并再次连接,则会再次显示配对对话框。

对话框不是在[central connectPeripheral]被调用时出现,而是在第一次调用[peripheral setNotifyValue:YES forCharacteristic:c]或 时出现[peripheral writeValue:data forCharacteristic:c]

有没有办法判断配对对话框是否会在它出现之前出现?(即操作系统是否存储了特定外围设备的配对信息?)

我需要在执行任何一个可能会打开对话框的调用之前知道该对话框是否会出现,以便我可以向用户显示一些说明。

bluetooth ios core-bluetooth bluetooth-lowenergy pairing

5
推荐指数
0
解决办法
968
查看次数