首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的图像反量化在图像上给出红色、绿色或蓝色的随机点

Java中的图像反量化在图像上给出红色、绿色或蓝色的随机点
EN

Stack Overflow用户
提问于 2015-10-16 14:22:54
回答 1查看 96关注 0票数 0

我对Java和图像处理非常陌生。我正在尝试对8*8块进行离散余弦变换(DCT),然后进行量化,然后通过反量化得到原始图像,然后进行IDCT。

但我最终解码的图像在图像的某些区域随机出现了绿色、红色和蓝色的点,尽管所有原始图像内容都被保留了下来。我知道这与量化过程中的舍入有关,因为不使用Math.round函数会正确地给出原始图像。我想不出实际的reason.You可以看到所附图片的不同

代码片段:

代码语言:javascript
复制
//Following gives the DCT for 3 buffers with r ,g and b values
temp_DCT_r=FormDCT(temp_DCT_r);
temp_DCT_g=FormDCT(temp_DCT_g);
temp_DCT_b=FormDCT(temp_DCT_b);

//This does the quantization to DCT values for a given
//quantization level                
PerformQuantization(temp_DCT_r,Quantization_Level);
PerformQuantization(temp_DCT_g,Quantization_Level);
PerformQuantization(temp_DCT_b,Quantization_Level);

//Following the quantization function
public static void PerformQuantization(double[][] F,int Quantization_Level) 
{
int N = 8;  

for (int u=0;u<N;u++) 
 {
    for (int v=0;v<N;v++) 
    {                       
       F[u][v]= Math.round(F[u][v]/(Math.pow(2, Quantization_Level)));

    }                
  }
}

Original Image Decoded Image

EN

回答 1

Stack Overflow用户

发布于 2015-10-18 14:59:26

我有问题了。问题是在量化过程中对数字进行舍入。当我使用IDCT时,出现了一个错误。R、G和B值在0 255之间变化,而DCT/IDCT为负值。有时四舍五入的结果会导致象限变化的问题,例如,不是0舍入给-1,类似地不是-1舍入给0。确定条件并进行特殊处理以使其正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33163787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档