我的录音机遇到了一些令人讨厌的问题。有些人仍在使用模拟调谐器,如果没有信号,模拟调谐器会倾向于吐出“雪”。
问题在于,当噪声进入编码器时,它会完全疯狂并首先消耗所有CPU然后最终冻结。由于记录器的主要部分是无论如何都要保持运行,我必须弄清楚如何继续这样做,因此编码器不会暴露于它无法处理的数据。
因此,想法是创建'熵检测器' - 一个简单而小的例程,它将通过帧缓冲区数据并计算熵索引,即图像中的数据实际上是如何随机的。
例程的结果将是一个数字,对于完全后退图片将为0,对于完全随机图片将为1 - 雪,即。
例程本身应该只是正向扫描,很少有适合寄存器的局部变量。
我可以使用zlib或7z api来完成这项任务,但我真的想自己做点什么。
有什么想法吗?
答案 0 :(得分:2)
PNG以这种方式工作(近似):对于每个像素,将其值替换为它所具有的值减去左边的像素值。从右到左执行此操作。
然后,您可以通过制作一个表格来计算熵(每个字符的位数),该表格显示当前值出现的频率,从这些绝对值中得出相对值,并为每个元素添加log2(n)* n的结果。 / p>
哦,你必须分别为每个颜色通道(r,g,b)执行此操作。
对于结果,取每个字符的平均比特数除以2 ^ 8(假设每种颜色有8位)。