teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

バグの修正

2021/10/18 03:33

投稿

majiponi
majiponi

スコア1722

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
- pixel_t a[CEIL(MAX_Y,N)][CEIL(MAX_X,N)] = {0};
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/N][j/N].r /= N*N;
16
+ a[i][j].r /= N*N; // 修正
17
- a[i/N][j/N].g /= N*N;
17
+ a[i][j].g /= N*N; // 修正
18
- a[i/N][j/N].b /= N*N;
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

画面の左半分という要素が抜けていたため補正

2021/10/18 03:33

投稿

majiponi
majiponi

スコア1722

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;