当前位置: 首页 > 知识库问答 >
问题:

如何使用OpenCV对高度压缩图像中的宏块进行“去量化”?

聂永怡
2023-03-14

给定一个高度压缩的图像(非特定格式),存在各种大小和形状的图像块,其中所有像素具有完全相同的值。

例如:

我的目标是“智能地”平滑这些块到梯度产生一个更平滑,更有机看起来的图像。我看过绘画中的技巧(如热扩散),可能是适用的,但我不完全确定如何适应我的目的。我目前正在编写自己的函数来执行这个操作(详情如下)。在OpenCV(或其他地方)中是否已经有一个C++函数可以执行这个过程?如果没有,是否有一种不同的方法可以产生更好/更快的结果?

[注意:我的所有图像在处理前都转换为浮点。]

我现在的想法是测试一个像素是否和它的任何邻居相同。如果是这样,我开始搜索,从像素位置开始,向外工作,直到找到一个不相同的邻居。不幸的是,这要求我使用整个图像,而不是滑动内核。我不会在这里包含搜索的代码,因为它很长而且重复。但它基本上包括测试当前像素左边的一列、上面的一列、右边的一列和下面的一行,并在向外工作时展开它们。像这样:

  13 14 15 16 17
  12  3  4  5 18
  11  2  x  6 19
  10  1  7  8 20
  9  22 23 24 21

一旦目标被获取,对于可能处于较大搜索范围但具有较小欧几里得距离的目标,将进行额外的考虑。

output_value = current_pixel_value - ((current_pixel_value-test_pixel_value)/(euclidean_distance*sigma));

共有1个答案

洪念
2023-03-14

本文介绍了Gary Baugh等人的视频解带技术。就像你对过度压缩的视频所做的一样。底层算法也应该适用于静止图像。也许有帮助。

 类似资料:
  • 从pagespeed中,我只获得了图像链接和可能的优化(以字节为单位) 例如,我有大小为300kb的图像,对于该图像,pagespeed显示100kb 这只是一个图像,但我相信我会有很多图像压缩。所以,我如何通过传递字节或百分比作为参数或使用java中的任何其他计算(通过使用API或图像处理工具)来压缩图像,以便获得google建议的图像压缩版本。 提前谢谢。

  • 我使用javax.imageioAPI和JAI来压缩不同类型的图像。它适用于JPEG使用和GIF使用。但是它不支持使用进行PNG压缩,这会引发一个异常,如压缩类型未设置或“无有效压缩”等。所以我在下面使用了PNG的。它可以工作,但是图像质量太差了。 有人能建议如何使用PNGImageWriter进行PNG压缩,以及哪个JAR包含它吗?

  • 我想上传图像到服务器。将我的图像转换为位图,但仍然出错。位图太大,无法上传到纹理中 如果我得到图片使用画廊意味着我得到错误的位图太大,不能上传到纹理 如果我得到图片使用相机意味着得到错误的 造成:java.lang.安全例外:权限拒绝:阅读<-plhd--1/>MediaProvider uri内容://media/外部/图像/媒体从pid=18253,uid=10257需要android.per

  • 本文向大家介绍如何使用html5进行图片压缩上传?相关面试题,主要包含被问及如何使用html5进行图片压缩上传?时的应答技巧和注意事项,需要的朋友参考一下 涉及到H5图片压缩,第一应该想到的是canvas的图片处理api。 先利用canvas.toDataURL('"image/jpeg",quality)中的quality参数进行图片压缩范围是0~1之间,再将图片base64格式转化为blob对

  • 这样循环有点慢。我尝试添加numba的@njit decorator,但显然它与opencv有问题。 输入图像为32x32像素。它们映射到32x32圆的输出图像。每个圆绘制在一个20x20像素的正方形内。也就是说,输出图像为640x640像素 一张图像需要大约100毫秒才能转化为圆圈,我希望能将其降低到30毫秒或更低 有什么建议吗?

  • 使用blockproc和Cosinus离散变换(