史蒂夫(Steve)与MATLAB进行图像处理

图像处理概念,算法和MATLAB

关于GIF延迟时间的难题

[TLDR:使用 imwrite ,,,,use a DelayTime 为0.02而不是0。]
在我的 28-FEB-2022帖子 ,我显示了一些使用延迟时间为0的代码,该代码创建了动画GIF文件。
im = rand(750,750)> 0.8;
为了k = 1:500
t = conv2(im(:,:,k),[2,2,2; 2,1,2; 2,2,2],'same');
im(:,:,1,k+1)=(t> 4)&(t <8);
结尾
imwrite(〜im,'life.gif',,,,'延迟时间',0,“ loopcount',1)
In response, reader Mikhail commented that one shouldn't use a DelayTime 0的目的是创建快速的GIF动画。他把我指向本·菲尔普斯(Ben Phelps)的博客文章 “最快的GIF不存在。” (注意:如果您访问此网站,您可能会在浏览器中收到安全警告。显然,该网站的证书几天前到期。访问您的风险。我试图与作者联系以让他们知道。)
很多年前(大约25岁!),我曾经在MATLAB中进行图像文件格式支持,因此我通常通过查看有关格式的规范开始研究此类问题。万博1manbetx相关规格是 GIF89A ,这是关键段落:
Notice that this language doesn't specify exactly what is supposed to happen if the Delay Time is 0.
我从经验中学到的一件事是,常用软件应用程序的实际行为有时与规格有所不同,实施者必须注意这一点。Ben查看了几个浏览器和其他应用程序的公开源代码,发现延迟时间为0或1(1/100 s),通常不兑现。取而代之的是,出于各种实际和历史原因,像0或1这样的非常低的延迟时间通常被任意碰撞至10(1/10 s)的值。
因此,将延迟时间设置为0不会为您提供最快的动画!我在Mac上使用的浏览器Safari对此进行了测试,这确实是正确的。
This GIF was generated using DelayTime 0:
生命(延迟时间= 0).gif
这个是使用一个 DelayTime 0.02( imwrite uses seconds instead of hundredths of seconds for this parameter):
life (delay time = 0.02).gif
确实,第二版确实更快地动画了。
One implication is that we may need to change the imwrite 文档,专门说要使用 DelayTime of 0 to get the fastest animation:
我实际上认为可能是时候改变 imwrite 界面。也许我们可以给这个参数一个名称,例如 帧率 ,(以每秒帧为单位)并记录最大值50(对应于 DelayTime 0.02 s(或200秒)。
我将向开发团队提出两个建议 imwrite
|
  • 打印
  • 发送电子邮件

评论

要,请,请点击此处登录到您的的帐户帐户或一个新。。。