问题标签 [bicubic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4524 浏览

java - Java 2D 图像大小调整忽略双三次/双线性插值渲染提示(OS X + linux)

我正在尝试使用 Image Voodoo 插件在 JRuby/Rails 应用程序中为上传的图像创建缩略图 - 问题是调整大小的缩略图看起来像......屁股。

似乎生成缩略图的代码绝对正确地将插值渲染提示设置为“双三次”,但它在我们的开发环境(OS X)或生产网络服务器(Linux)上没有兑现它们.

我已经提取了生成缩略图的代码,将其重写为一个直接的 Java 应用程序(即从 main() 方法启动),插值渲染提示明确设置为“双三次”,并重现了(缺少)双三次和双线性调整大小。

正如预期的那样,在 OS X 和 Linux 上,缩略图是丑陋的和像素化的,但在 Windows 上,它使用双三次插值很好地调整了图像的大小。

我是否缺少任何 JVM 环境设置和/或其他库以使其正常工作?我为此做了很多头撞墙。

0 投票
4 回答
15956 浏览

audio - How do you do bicubic (or other non-linear) interpolation of re-sampled audio data?

I'm writing some code that plays back WAV files at different speeds, so that the wave is either slower and lower-pitched, or faster and higher-pitched. I'm currently using simple linear interpolation, like so:

This works fine, but it tends to sound OK only when I lower the frequency of the playback (i.e. slow it down). If I raise the pitch on playback, this method tends to produce high-frequency artifacts, presumably because of the loss of sample information.

I know that bicubic and other interpolation methods resample using more than just the two nearest sample values as in my code example, but I can't find any good code samples (C# preferably) that I could plug in to replace my linear interpolation method here.

Does anyone know of any good examples, or can anyone write a simple bicubic interpolation method? I'll bounty this if I have to. :)

Update: here are a couple of C# implementations of interpolation methods (thanks to Donnie DeBoer for the first one and nosredna for the second):

In these functions, x1 is the sample value ahead of the point you're trying to estimate and x2 is the sample value after your point. x0 is left of x1, and x3 is right of x2. t goes from 0 to 1 and is the distance between the point you're estimating and the x1 point.

The Hermite method seems to work pretty well, and appears to reduce the noise somewhat. More importantly it seems to sound better when the wave is sped up.

0 投票
3 回答
12463 浏览

c# - C# 中的三次/曲线平滑插值

下面是一个三次插值函数:

给定 0.0f - 1.0f 之间的数量,此函数将在开始值和结束值之间进行三次插值。如果你要绘制这条曲线,你最终会得到这样的结果:

已过期 Imageshack 图像已删除

这里的三次函数是:

我如何调整它以产生两条进出切线?

要产生这样的曲线:(线性开始到立方结束)

已过期 Imageshack 图像已删除

作为一项功能

并像另一个这样:(立方开始到线性结束)

已过期 Imageshack 图像已删除

有人有什么想法吗?提前致谢。

0 投票
1 回答
1343 浏览

css - IE6 图像缩放与双三次滤波器

我有一个项目,我必须在实际浏览器端调整一些图像的大小。

IE8、FF3 等都应用过滤器来平滑图像的大小调整,因此在这些浏览器中一切看起来都不错。

在 IE7 中,我应用了以下修复,效果很好:-ms-interpolation-mode:bicubic;

然而,在 IE6 中,我只能找到对 AlphaImage 过滤器的引用(与用于在 PNG 文件上启用 alpha 透明度的过滤器相同)。但是我找不到如何使用它的示例,我也无法自己使用它。

谁能给我一个例子?最好应用于实际的 img 标签,但如果需要,我可以使用背景图像。

MSDN 链接(其价值):http: //msdn.microsoft.com/en-us/library/ms532969%28VS.85%29.aspx

我在 CSS 中使用的代码应用于 img,尽管我也尝试将其应用于 img 容器(没有效果):

一千谢谢你提前:)

瑞克

0 投票
1 回答
10268 浏览

image-processing - 双三次插值如何工作?

在阅读了有关该主题的文本后,我发现它考虑了 16 个原始相邻像素。我想知道的是它如何计算新像素的颜色值。如果 16 个像素的颜色值已知,那么如何计算新像素的值?

0 投票
2 回答
21977 浏览

android - 如何在 Android 中使用双三次插值在画布上绘制和缩放位图?

我想在比实际尺寸更大的画布上绘制位图。我可以使用 canvas.drawBitmap(bitmap, null, destRect, null); 但是如果源图像明显小于目标矩形,则质量会很差,因为结果是像素化的。

如何使用双线性或双三次重采样绘制位图?

任何帮助将不胜感激,thanx。

0 投票
1 回答
703 浏览

thumbnails - 将客户端图像大小调整为缩略图会导致图片锯齿和丑陋

我试图即时使用缩略图,这样我就不必同时拥有拇指和实际图像。我用 PHP(具有出色的imagecopyresampled功能)完成了它们,效果很好。

现在我正在寻找在没有 PHP 的情况下做类似的事情,我对替代方案很好奇。让浏览器进行渲染似乎不是一个好主意。我使用 Explorer、Safari 和 Chrome 得到了很好的结果,而 Firefox 和 Opera 都产生了锯齿状的拇指。我知道这与浏览器是否能够使用双三次插值进行缩放有关。

我现在想知道是否有办法让 Javascript 做到这一点,就像 PHP 之前使用双三次插值所做的那样,这会产生更好看的拇指,或者是否有解决浏览器问题的方法(我知道 CSS 属性-ms-interpolation-mode)?一般来说,对客户端生成的拇指有什么看法?如果没有合理的替代方案,也许最好继续使用 PHP?

PS 如果我使用 Javascript 或 CSS 重新缩放图像,这有关系吗?

0 投票
1 回答
3116 浏览

interpolation - 图像重采样双三次插值 Java

我调整了图像的大小,但它的质量很低。我听说过双三次插值,但我无法获得任何实现代码。这是我的代码:

我想在上采样和下采样后获得最好的质量。

0 投票
4 回答
4460 浏览

c++ - 如何最好地改善双三次插值算法的执行时间?

我正在英特尔上用 C++ 开发一些图像处理软件,它必须一遍又一遍地在小(大约 1kpx)图像上运行双三次插值算法。这需要很多时间,我的目标是加快速度。我现在拥有的是一个基于文献的基本实现,一个稍微改进的(关于速度)版本,它不进行矩阵乘法,而是对插值多项式和最后一个固定的部分使用预先计算的公式矩阵乘法代码的点版本(实际上工作得更慢)。我也有一个具有优化实现的外部库,但是对于我的需求来说它仍然太慢了。我接下来考虑的是:

  • 在浮点和定点版本上使用 MMX/SSE 流处理进行矢量化
  • 使用卷积在傅里叶域中进行插值
  • 使用 OpenCL 或类似工具将工作转移到 GPU 上

这些方法中的哪一种可以产生最大的性能提升?你能推荐另一个吗?谢谢。

0 投票
1 回答
2820 浏览

opencl - OpenCL 双三次插值内核因错误 CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST 而失败

双三次插值是一种常见的插值方法,但我在 OpenCL 上找不到任何可行的实现。我决定自己在 OpenCL 上编写双三次插值,但是......

我对内核程序有一些问题。

当我运行内核执行时,程序失败并出现错误 CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST。没有关于错误原因的任何其他信息。我正在使用 google 代码的 javacl 绑定形式:http ://code.google.com/p/javacl,Ubuntu linux 10.10 上的 AMD Accelerated Parallel Processing SDK 2.3,硬件 AMD Radeon 5xxxHD

我还没有在 ubuntu 上打开用于 AMD APP SDK 的调试器(

如果我取消注释 float4 val=read_imagef(signal, sampler, (float2)(x+iX,y+iY)); 并评论双三次插值“float4 val = ...”的计算都没有任何错误(但使用双线性插值)。我认为这个错误是因为无效的内存访问或寄存器内存溢出。


我重写了这个程序以使用本地内存,但它仍然无法正常工作

你知道这个问题的任何决定。

Java 源代码 + maven2 构建。使用命令“mvn clean compile exec:java”编译并运行demo。

问候,伊戈尔