latex 使用游程编码对下面的图像进行编码

latex 使用游程编码对下面的图像进行编码

这个问题涉及游程编码。这是一种在不丢失任何信息的情况下减小图像文件大小的方法(无损压缩)。游程编码依赖于像素值的统计相关性,例如相同颜色的长串像素。我们从一个简单的例子开始,如下所示:我们可以从左上角开始逐行列出像素值(白色为 1,黑色为 0),如下所示:11111100111111000111110...100111111 很明显,白色和黑色像素都有长串。在这种情况下,在每个字符串中存储像素数会更有效。使用约定

在此处输入图片描述 我们总是从一串白色像素开始,图像可以写成 6,2,6,3,5,3,5,3,5,3,5,2,6。由于我们需要存储的最大数字是 6,并且 22 −1 = 3 < 6 ≤ 7 = 23 −1,因此对于每个值的固定位长,我们需要每个数字 3 位。由于有 13 个像素串,我们总共需要 13×3 = 39 位。这与直接以每像素(黑色或白色)一位存储的图像的存储空间相比,需要 54 位(因为有 54 个像素)。

答案1

在此处输入图片描述

\documentclass{article}

\makeatletter

\newif\ifwhite
\newcommand\zz[1]{%
\begin{flushleft}
\hsize=\dimexpr9em+18\fboxsep+18\fboxrule\relax
\whitetrue
\@for\z:=#1\do{%
  \loop
   \fbox{\ifwhite\phantom{\rule{1em}{1em}}\else\rule{1em}{1em}\fi}%
   \linebreak[0]%
   \edef\z{\the\numexpr\z-1\relax}%
   \ifnum\z>0
   \repeat
   \ifwhite\whitefalse\else\whitetrue\fi
}%
\end{flushleft}
}
\makeatother

\begin{document}

\zz{6,2,6,3,5,3,5,3,5,3,5,2,6}

\end{document}

相关内容