在灰度png图像中存储较大的值会有什么效果



我正在尝试用java对块大小为8X8的图像执行DCT。在对第一个块执行DCT之后,我得到了第一个值"372"。在对整个图像执行DCT后,我将这些值写入PNG灰度图像。图像内的值自动更改。灰度图像将不会存储大于255的值。大于255(例如372(的值会发生什么情况?

在信息丢失后无法获取原始图像,因此需要:

  1. 执行DCT或其他
  2. 从整个图像中查找min,max
  3. 更改范围,使任何pixel(x,y)=(255*(pixel(x,y)-min))/(max-min)
    • +/-1或一些如果要夹紧到正确的范围

在这之后,你会失去绝对值,但相对变化会保持在

  • 出于某些目的,这就足够了吗
  • 如果需要恢复原始图像
  • 则需要将最小值、最大值编码到某个位置的png
  • 所以添加伪扫描线并将CCD_ 5编码为最初的几个像素

那么恢复就很容易了:

  1. 读取png图像
  2. 解码最小值、最大值
  3. 恢复原始动态范围pixel(x,y)=min+(((max-min)*pixel(x,y))/255)
    • +/-1或一些如果要夹紧到正确的范围
  4. 执行IDCT或其他

最新更新