在代码段中划分

时间:2017-01-11 01:53:59

标签: c image-processing

我在理解(imageptt->h / 4) + (i / 2)所做的事情时遇到了很大的问题:

 for(int i= 0; i < imageptt->h; i++)
 {
     for(int j = 0; j < imageptt->w; j++)
     { 
        pixels[i][j] = old[(imageptt->h / 4) + (i / 2)]
                                     [(imageptt->w  / 4) + (j / 2)];
     }
 }

2 个答案:

答案 0 :(得分:0)

此代码的用途是将new_pixels设置为old_pixels的中心位置,并按比例放大。

例如,如果old_pixels是:

ABCDEFGH
IHJKLMNO
PQRSTUVW
XYZabcde
fghijklm
nopqrstu
vwxyz012
3456789*

然后new_pixels将设置为

RRSSTTUU
RRSSTTUU
ZZaabbcc
ZZaabbcc
hhiijjkk
hhiijjkk
ppqqrrss
ppqqrrss

(假设在图像的行上有一个外环)。

向索引添加(image_ptr->height / 4)(image_ptr->width / 4)开始从垂直和水平方向的1/4偏移读取到old_pixels。划分(i / 2)(j / 2)可将图像缩放2倍。

答案 1 :(得分:0)

代码片段有点奇怪,因为它默认情况下i和j不均匀 - 它可能是有意的但看起来像一个bug。 看起来新像素试图获得旧像素的中心四分之一,但由于奇数索引,每个像素将被采样两次

如果旧像素是:

GOARCH

新像素将是

A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D