回答編集履歴
2
バグの修正
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
void bmp_cool(bmp_header_t *hd, pixel_t img[MAX_Y][MAX_X])
|
4
4
|
{
|
5
5
|
int i, j;
|
6
|
-
|
6
|
+
struct{int r, g, b;} a[CEIL(MAX_Y,N)][CEIL(MAX_X,N)] = {0};
|
7
7
|
for(i=0; i< hd->biHeight; i++){
|
8
8
|
for(j=0; j< hd->biWidth/2; j++){
|
9
9
|
a[i/N][j/N].r += img[i][j].r;
|
@@ -13,9 +13,9 @@
|
|
13
13
|
}
|
14
14
|
for(i=0; i<CEIL(hd->biHeight,N); i++){
|
15
15
|
for(j=0; j<CEIL(hd->biWidth/2,N); j++){
|
16
|
-
a[i
|
16
|
+
a[i][j].r /= N*N; // 修正
|
17
|
-
a[i
|
17
|
+
a[i][j].g /= N*N; // 修正
|
18
|
-
a[i
|
18
|
+
a[i][j].b /= N*N; // 修正
|
19
19
|
}
|
20
20
|
}
|
21
21
|
for(i=0; i< hd->biHeight; i++){
|
@@ -28,4 +28,6 @@
|
|
28
28
|
}
|
29
29
|
```
|
30
30
|
(スマホからの投稿のため、動作未確認です)
|
31
|
-
こんな感じで、サンプリング、平均化、結果の格納を分離してみては?
|
31
|
+
こんな感じで、サンプリング、平均化、結果の格納を分離してみては?
|
32
|
+
|
33
|
+
追記:オーバーフローに関するバグと、2つ目の平均化のループにバグがあった(インデックスがiではなくi/Nになっていた、jも同様)ので修正しました。
|
1
画面の左半分という要素が抜けていたため補正
answer
CHANGED
@@ -5,21 +5,21 @@
|
|
5
5
|
int i, j;
|
6
6
|
pixel_t a[CEIL(MAX_Y,N)][CEIL(MAX_X,N)] = {0};
|
7
7
|
for(i=0; i< hd->biHeight; i++){
|
8
|
-
for(j=0; j< hd->biWidth; j++){
|
8
|
+
for(j=0; j< hd->biWidth/2; j++){
|
9
9
|
a[i/N][j/N].r += img[i][j].r;
|
10
10
|
a[i/N][j/N].g += img[i][j].g;
|
11
11
|
a[i/N][j/N].b += img[i][j].b;
|
12
12
|
}
|
13
13
|
}
|
14
14
|
for(i=0; i<CEIL(hd->biHeight,N); i++){
|
15
|
-
for(j=0; j<CEIL(hd->biWidth,N); j++){
|
15
|
+
for(j=0; j<CEIL(hd->biWidth/2,N); j++){
|
16
16
|
a[i/N][j/N].r /= N*N;
|
17
17
|
a[i/N][j/N].g /= N*N;
|
18
18
|
a[i/N][j/N].b /= N*N;
|
19
19
|
}
|
20
20
|
}
|
21
21
|
for(i=0; i< hd->biHeight; i++){
|
22
|
-
for(j=0; j< hd->biWidth; j++){
|
22
|
+
for(j=0; j< hd->biWidth/2; j++){
|
23
23
|
img[i][j].r = a[i/N][j/N].r;
|
24
24
|
img[i][j].g = a[i/N][j/N].g;
|
25
25
|
img[i][j].b = a[i/N][j/N].b;
|