回答編集履歴

2

バグの修正

2021/10/18 03:33

投稿

majiponi
majiponi

スコア1722

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  int i, j;
10
10
 
11
- pixel_t a[CEIL(MAX_Y,N)][CEIL(MAX_X,N)] = {0};
11
+ struct{int r, g, b;} a[CEIL(MAX_Y,N)][CEIL(MAX_X,N)] = {0};
12
12
 
13
13
  for(i=0; i< hd->biHeight; i++){
14
14
 
@@ -28,11 +28,11 @@
28
28
 
29
29
  for(j=0; j<CEIL(hd->biWidth/2,N); j++){
30
30
 
31
- a[i/N][j/N].r /= N*N;
31
+ a[i][j].r /= N*N; // 修正
32
32
 
33
- a[i/N][j/N].g /= N*N;
33
+ a[i][j].g /= N*N; // 修正
34
34
 
35
- a[i/N][j/N].b /= N*N;
35
+ a[i][j].b /= N*N; // 修正
36
36
 
37
37
  }
38
38
 
@@ -59,3 +59,7 @@
59
59
  (スマホからの投稿のため、動作未確認です)
60
60
 
61
61
  こんな感じで、サンプリング、平均化、結果の格納を分離してみては?
62
+
63
+
64
+
65
+ 追記:オーバーフローに関するバグと、2つ目の平均化のループにバグがあった(インデックスがiではなくi/Nになっていた、jも同様)ので修正しました。

1

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

2021/10/18 03:33

投稿

majiponi
majiponi

スコア1722

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  for(i=0; i< hd->biHeight; i++){
14
14
 
15
- for(j=0; j< hd->biWidth; j++){
15
+ for(j=0; j< hd->biWidth/2; j++){
16
16
 
17
17
  a[i/N][j/N].r += img[i][j].r;
18
18
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  for(i=0; i<CEIL(hd->biHeight,N); i++){
28
28
 
29
- for(j=0; j<CEIL(hd->biWidth,N); j++){
29
+ for(j=0; j<CEIL(hd->biWidth/2,N); j++){
30
30
 
31
31
  a[i/N][j/N].r /= N*N;
32
32
 
@@ -40,7 +40,7 @@
40
40
 
41
41
  for(i=0; i< hd->biHeight; i++){
42
42
 
43
- for(j=0; j< hd->biWidth; j++){
43
+ for(j=0; j< hd->biWidth/2; j++){
44
44
 
45
45
  img[i][j].r = a[i/N][j/N].r;
46
46