我正在将一个图像处理例程库从Java移植到C中,当我比较结果时,我得到了一些非常小的差异.这些差异在于不同语言对浮动值的处理是否合理,还是我还有工作要做!
例程是使用3 x 3内核的卷积,它在由线性像素阵列,宽度和深度表示的位图上操作.您无需完全理解这段代码来回答我的问题,它只是供参考.
Java代码;
for (int x = 0; x < width; x++){
for (int y = 0; y < height; y++){
int offset = (y*width)+x;
if(x % (width-1) == 0 || y % (height-1) == 0){
input.setPixel(x, y, 0xFF000000); // Alpha channel only for border
} else {
float r = 0;
float g = 0;
float b = 0;
for(int kx = -1 ; kx <= 1; kx++ ){
for(int ky = -1 ; ky <= 1; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Java中对图像执行中值过滤器,但速度非常慢.首先,如果你们有任何人知道我可以使用它的独立实现,那么如果你能让我知道的话会很棒.我正在Android上实现,试图复制JAI的一小部分.
在我的方法中,我采用每个像素,使用提取R,G和B值
r = pixel >> 16 & 0xFF
Run Code Online (Sandbox Code Playgroud)
或类似的,找到内核的中位数并完成
pixel = a | r <<16 | g << 8 | b
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以从int中获取字节,这样会更快?
亲切的问候,
加文
编辑:完整的代码,以帮助诊断我的低性能请求
对于实际的源文件,请转到这里我可以找到medianFilter的实现.
width和height变量用于dest的大小,可用作类成员变量.像素被线性化为一维阵列.
private void medianFilterSquare(int[] source, int[] dest, int rWidth,
int rHeight, int radius) {
// Source has been reflected into a border of size radius
// This makes it radius * 2 pixels wider and taller than the dest
int r,g,b;
int destOffset, rOffset, …
Run Code Online (Sandbox Code Playgroud) 我有一系列要点,我将在图表上变成一条线.我想要的是给图表下的区域一个渐变填充.它看起来有点像这样的彭博图;
我的问题实际上有三个部分;
我最大的问题是决定要使用的数据结构,我可以使用许多多边形状(每个线/数据系列一个),然后告诉画笔绘制;
然后我会用白色绘制形状的边界.
谢谢,
GAV
我是C编程语言的新手,但我知道它的标准化程度与Java不同.
在执行算法运行时的比较时,为了保持分析公平,我需要调用类似于Java的Array.sort(int [])的方法.
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
Run Code Online (Sandbox Code Playgroud)
似乎是我最好的选择,但我想知道如何找到我正在编译的C版本的后端实现.
如何找出我正在使用的实现?这取决于编译器还是包含?我正在运行我运行Ubuntu并使用gcc编译器,我的所有工具都是通过synaptic包管理器获得的,或者是默认安装的.
我希望这个问题有道理!
亲切的问候,
加文
还是比这更好的方式?
String concat(String[] strings) {
StringBuilder out = new StringBuilder();
for(String next: strings) {
out.append(next);
}
return out.toString();
}
Run Code Online (Sandbox Code Playgroud)
不用担心,如果没有,我觉得应该有一个内置?
我想添加一个新的LabelField(字符串标签,长样式),但如果我使用Field.FIELD_HCENTER作为我的样式,那么我得到以下对齐.
|---- This text is horizontally aligned but in ----|
|---- a block.
Run Code Online (Sandbox Code Playgroud)
但我想要的是;
|---- This text is horizontally aligned and ----|
|------- independently so for each line --------|
Run Code Online (Sandbox Code Playgroud)
这很简单吗?我无法找到该字段常量以使其适用于我.
提前致谢,
GAV
这是两个问题,但对C++开发人员来说无疑是微不足道的.
考虑到我有加密密钥,加密/解密二进制数据流的最简单方法是什么?
const vector&encryption_key
这是一个概念证明,因此加密的强度或可靠性不如简单易懂的代码重要.
我可以根据需要扩展问题的任何一部分,因为您可能已经猜到我需要将一些数据保存到文件中的硬盘中,然后在另一次运行的应用程序中检索它,文件很大,这是我的方式缓存通过网络检索的数据.
谢谢,
GAV
java ×4
c ×2
algorithm ×1
blackberry ×1
c++ ×1
caching ×1
concat ×1
convolution ×1
encryption ×1
gradient ×1
graph ×1
image ×1
label ×1
silverlight ×1
sorting ×1
string ×1