回答編集履歴
2
注釈修正
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
for( int xmin=0; xmin<hW; xmin+=N ) //xmin : 小領域の左端
|
16
16
|
{
|
17
17
|
int xmax = xmin+N-1; //xmax : 小領域の右端
|
18
|
-
if( xmax >= hW )xmax = hW-1; //※「画像
|
18
|
+
if( xmax >= hW )xmax = hW-1; //※「画像横幅の半分がNの倍数」みたいな前提があるなら不要
|
19
19
|
|
20
20
|
//小領域内の合計を求む
|
21
21
|
int R=0, G=0, B=0;
|
1
記述微修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
16x16 の領域毎に平均値に置き換えたい
|
1
|
+
「16x16 の領域毎に平均値に置き換えたい」という話なのであれば,その話を素直に実装すればよいのではないでしょうか.
|
2
|
-
(配列 `a` とかいう謎の物を持ち出したりせずに,16x16毎に愚直に処理をするコードを書けばよいのでは?)
|
2
|
+
(配列 `a` とかいう謎の物を持ち出したりせずに,16x16の小領域毎に愚直に処理をするコードを書けばよいのでは?)
|
3
3
|
|
4
4
|
```C
|
5
5
|
#define N 16
|
@@ -7,17 +7,17 @@
|
|
7
7
|
void bmp_cool( int W, int H, pixel_t img[MAX_Y][MAX_X])
|
8
8
|
{
|
9
9
|
const int hW = W/2;
|
10
|
-
for( int ymin=0; ymin<H; ymin+=N )
|
10
|
+
for( int ymin=0; ymin<H; ymin+=N ) //ymin : 小領域の上端
|
11
11
|
{
|
12
|
-
int ymax = ymin+N-1;
|
12
|
+
int ymax = ymin+N-1; //ymax : 小領域の下端
|
13
13
|
if( ymax >= H )ymax = H-1; //※「画像サイズがNの倍数」みたいな前提があるなら不要
|
14
14
|
|
15
|
-
for( int xmin=0; xmin<hW; xmin+=N )
|
15
|
+
for( int xmin=0; xmin<hW; xmin+=N ) //xmin : 小領域の左端
|
16
16
|
{
|
17
|
-
int xmax = xmin+N-1;
|
17
|
+
int xmax = xmin+N-1; //xmax : 小領域の右端
|
18
18
|
if( xmax >= hW )xmax = hW-1; //※「画像サイズがNの倍数」みたいな前提があるなら不要
|
19
19
|
|
20
|
-
//
|
20
|
+
//小領域内の合計を求む
|
21
21
|
int R=0, G=0, B=0;
|
22
22
|
for( int y=ymin; y<=ymax; ++y )
|
23
23
|
{
|