标签: quantization

C中最快的抖动/半色调库

我正在开发一个自定义瘦客户端服务器,为其客户端提供渲染的网页.服务器在多核Linux机器上运行,Webkit提供html渲染引擎.

唯一的问题是客户端显示受限于4位(16色)灰度调色板.我目前正在使用LibGraphicsMagick抖动图像(RGB-> 4bit灰度),这是服务器性能的明显瓶颈.分析表明,超过70%的时间用于运行GraphicsMagick抖动函数.

我已经探索了stackoverflow和Interwebs以获得良好的高性能解决方案,但似乎没有人在各种图像处理库和抖动解决方案上做任何基准测试.

我会更乐意发现:

  1. 什么是关于抖动/半色调/量化RGB图像到4位灰度的最高性能库.
  2. 是否有任何特定的抖动库或任何可以指向我的公共域代码片段?
  3. 在高性能方面,您更喜欢哪些库来操作图形?

首选C语言库.

c image-processing dithering quantization

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

从图像中提取颜色

我想提取图像中最常用的颜色,或者至少是主色调你能推荐我如何从这个任务开始?或者指向一个类似的代码?我一直在寻找它,但没有成功.

machine-learning hierarchical-clustering image-processing quantization computer-vision

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

Leptonica实施的'Modified Median Cut'是否完全不使用中位数?

我正在玩图像处理,并决定阅读颜色量化的工作原理,经过一些阅读后我发现了修正中值切割量化算法.

我一直在阅读Leptonica库中C实现的代码,并且遇到了一些我觉得有点奇怪的东西.

现在我要强调的是,我不是这方面的专家,我不是数学头,所以我预测这一切都归结于我不理解所有这一切而不是算法的实现是错误的一点都不

该算法声明vbox应沿着摘要轴分割,并且应使用以下逻辑进行拆分

通过将bin与中值像素(按群体)定位,选择较长边并在该边的中心划分来划分最大轴.我们可以简单地将具有中间像素的bin放在较短的一侧,但是在细分的早期阶段,这倾向于将低密度簇(在细分中不考虑)放在相同的vbox中作为高密度的一部分即使未来基于中位数的细分,也会以中值vbox颜色进行投票的集群.这里使用的算法在早期细分中特别重要,并且3对于给出可见但低群体颜色群集它们自己的vbox是有用的.这对高密度集群的细分几乎没有影响,最终将在其vbox​​中具有大致相等的人口.

为了论证,让我们假设我们有一个vbox,我们正在分裂过程中,红轴是最大的.在Leptonica算法中,在01297行,代码似乎执行以下操作

  • 迭代所有可能的红色绿色和蓝色变化
  • 对于每次迭代,它会增加沿红轴找到的像素总数(总体)
  • 对于每种红色,它总结当前红色和先前红色的总体,从而为每个红色存储累积值

注意:当我说"红色"时,我指的是沿着轴的每个点被迭代覆盖,实际颜色可能不是红色但包含一定量的红色

因此,为了便于说明,假设我们沿红轴有9个"箱"并且它们具有以下种群

4 8 20 16 1 9 12 8 8

在迭代所有红色区后,partialsum数组将包含上述区间的以下计数

4 12 32 48 49 58 70 78 86

将有86的值

一旦完成,就应该执行实际的中值切割,而对于红轴,则在线01346执行

它迭代垃圾箱并检查它们累积的总和.这是从算法描述中抛出我的部分.它看起来在第一仓,有一个值,该值大于小于总/ 2

不会总/ 2意味着它正在寻找具有价值比大仓平均数值,而不是中位数?上述垃圾箱的中位数为49

使用4349可能会对盒子的分割方式产生巨大影响,即使算法然后通过移动到匹配值所在的较大边的中心来进行.

令我困惑的另一件事是该文件规定应该找到具有中值的bin,但是如果存在偶数个bin则不提及如何继续..中位数将是(a +的结果)b)/ 2并且不保证任何垃圾箱都包含该人口数.所以这就是让我觉得有些近似值可以忽略不计的原因,因为分裂实际上是在所选bin的较大边的中心处.

对不起,如果它有点长的啰嗦,但我想尽可能多,因为它已经让我疯了几天了;)

c algorithm math colors quantization

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

使用Image Magick创建具有固定色彩映射的GIF图像

我想用指定的色彩映射保存其他图像的.gif转换.Image Magick中的"-remap cmap.gif"选项

示例:convert -remap cmap.gif input.png output.gif

DOES使用cmap.gif中的指定颜色处理input.png,但它会更改输出颜色映射中的顺序.有没有办法强制Image Magick使用完全相同的色彩映射?

我正在尝试将新图像添加到一个古老的显示程序中,该程序接受.gif文件输入,但使用固定的色彩映射,无法更改单个图像的色彩映射.

imagemagick quantization color-mapping

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

使用隐马尔可夫模型的手势识别

我目前正在开发一个手势识别应用程序,使用隐马尔可夫模型作为matlab上的分类阶段(使用网络摄像头).我已经完成了预处理部分,其中包括特征向量的提取.我已将主成分分析(PCA)应用于这些向量.

现在让我使用Kevin Murphy的HMM工具箱,我需要我的观察序列是数字(整数)的形式,范围从1到M(M =观察符号的数量).如果我是正确的那么我必须使用码本的概念并使用矢量量化来获得我的观察序列.

我的问题:

  1. 我如何建立一个码本?
  2. 如何使用此码本获取输入视频的观察符号?

注意:我使用Elliptical Fourier描述符进行形状特征提取,并且对于每个手势,PCA值存储在维度矩阵[11x220]中(视频中的帧数= 11)

接下来我该怎么办?有没有其他方法来获得特征向量而不是椭圆傅里叶描述符?

matlab quantization gesture-recognition k-means hidden-markov-models

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

Ffmpeg,avconv和sameq

我早些时候写过:

ffmpeg -i input.mp4 -sameq output.mp3
Run Code Online (Sandbox Code Playgroud)

...从而从视频文件接收音频.Ffmpeg刚刚取出或将音频转换为具有适当质量的mp3.全部归功于关键:-sameq [使用相同的量化器作为源]

现在在Ubuntu而不是ffmpeg我们有libav和那里(在avcomv的人)我看到没有-sameq键.嗯,这是一个问题:我现在要做什么?..

我现在要做的是获得与原版相同质量的转换音频文件?

PS.-sameq:使用相同的量化器作为源(暗示VBR).

$ man ffmpeg | col -b > ./man_ffmpeg
Run Code Online (Sandbox Code Playgroud)

这个man_ffmpeg在那里:http://pastebin.com/qYxz1M1E

FFMPEG(1)
NAME
   ffmpeg - ffmpeg video converter
SYNOPSIS
   ffmpeg [[infile options][-i infile]]... {[outfile options] outfile}...
...
...
...
-sameq
   Use same quantizer as source (implies VBR).
...
...
...
SEE ALSO
   avplay(1), avprobe(1), avserver(1) and the Libav HTML documentation
AUTHORS
   The Libav developers
2014-02-06
FFMPEG(1)
Run Code Online (Sandbox Code Playgroud)

audio ffmpeg quantization libav avconv

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

有效的gif /图像颜色量化?

所以我试图在我的Java应用程序中编码一些动画gif文件.我一直在使用在线发现的一些类/算法,但似乎没有一个工作得很好.

现在我正在使用这个量化类将图像的颜色减少到256:http://www.java2s.com/Code/Java/2D-Graphics-GUI/Anefficientcolorquantizationalgorithm.htm

问题是,它似乎并不是非常"聪明".

如果我传入的图像超过256种颜色,它确实会减少颜色数,但效果不是很好.(红色变成蓝色等 - 非常明显的错误就像这样).

您可以推荐使用Java中的颜色量化的其他算法/库吗?


注意:我知道在此算法中使用的Neuquant:http://www.java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm

它非常慢并产生"eh"结果(帧之间的颜色闪烁).

java algorithm gif animated-gif quantization

5
推荐指数
2
解决办法
3305
查看次数

Matlab颜色量化

我目前正在研究与颜色量化相关的项目.该算法意味着作为初始步骤k-means算法.我的代码现在直到:

N = 10;
K=7;
I=imread('baboon.bmp');
Idouble = double(I);
mat=zeros(size(I,1)*size(I,2),size(I,3));
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);

mat(:,1)=R(:);
mat(:,2)=G(:);
mat(:,3)=B(:);
[IDX,CENTERS] = kmeans(mat,N);
Run Code Online (Sandbox Code Playgroud)

算法的下一步是找到最流行的颜色(包含图像中最多像素的颜色).这似乎很容易,但当我试图从IDX变量中提取时,我有点卡住了.

matlab image image-processing quantization k-means

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

Tensorflow中8位量化的致命错误

我正在尝试使用Bazel和我的Ubuntu 16.04系统在Tensorflow中运行量化模型.

我运行了以下命令:

bazel build tensorflow/tools/quantization:quantize_graph
Run Code Online (Sandbox Code Playgroud)

这是错误:

错误:/ tensorflow-master/tensorflow/contrib/verbs/BUILD:136:1:规则'// tensorflow/contrib/verbs:rdma'的C++编译失败(退出1).

18:0:./tensorflow/contrib/verbs/rdma.h:21:30:在文件从tensorflow /了contrib /动词/ rdma.cc包括致命错误功能:InfiniBand/verbs.h:没有这样的文件或目录

编译终止.

目标// tensorflow/tools/quantization:quantize_graph无法构建

我怎么解决这个问题?提前致谢!

quantization bazel tensorflow

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

Tensorflow qint8,quint8,qint32,qint16和quint16数据类型是什么?

我正在查看Tensorflow tf.nn.quantized_conv2d函数,并且想知道qint8等确切是什么数据类型,特别是如果它们是tf.contrib.quantize中用于“伪量化节点”的数据类型,或者实际上使用8位(用于qint8)存储在内存中。

我知道它们是在tf.dtypes.DType中定义的,但是没有关于它们实际是什么的任何信息。

python quantization neural-network tensorflow tensorflow-lite

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