###前提・実現したいこと
メディアンフィルタを使用してノイズが入った画像のノイズを除去するプログラムを作っています。
val[i++] = bufimage->pdata[y + a][x + b][k];
の部分で読み取りアクセス違反が発生し、実行ができませんでした。
原因がわからないため教えてください。
説明不足かもしれませんが、宜しくお願い致します。
###発生している問題・エラーメッセージ
例外がスローされました:読み取りアクセス違反。 **bufimage** が 0x80 でした。 が発生しました
###該当のソースコード
C言語
1void median(Image image) 2{ 3 int x, y, k, m, n; 4 int i=0; 5 int a = 0; 6 int b = 0; 7 int buf=0; 8 Image bufimage; 9 int val[9]; 10 int N = 0; 11 printf("フィルタサイズ選択してください。\n"); 12 printf("フィルタサイズ:"); 13 scanf_s("%d", &N); 14 N = 2 * N + 1; 15 16 bufimage = createImage(image->height, image->width); 17 18 for (y = 0; y < image->height; y++) { 19 for (x = 0; x < image->width; x++) { 20 for (k = 0; k < N; k++) 21 { 22 bufimage->pdata[y][x][k] = image->pdata[y][x][k]; 23 } 24 } 25 } 26 27 //フィルタ処理 28 for (y = (N / 2); y < image->height - (N / 2); y++) { 29 for (x = (N / 2); x < image->width - (N / 2); x++) { 30 for (k = 0; k < 3; k++) { 31 32 //値をソート用バッファにコピー 33 if(i<N*N) 34 { 35 for (a = -(N / 2); a <= (N / 2); a++) 36 { 37 for (b = -(N / 2); b <= (N / 2); b++) 38 { 39 val[i++] = bufimage->pdata[y + a][x + b][k]; 40 } 41 } 42 } 43 44 //ソート 45 for (m = 0; m < (N*N) - 1; m++) 46 for (n = m + 1; n<N*N; n++) 47 if (val[m] < val[n]) 48 { 49 buf = val[m]; 50 val[m] = val[n]; 51 val[n] = (byte)buf; 52 } 53 54 image->pdata[y][x][k] = (byte)(val[(N*N) / 2]); 55 } 56 } 57 } 58} 59
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
C言語
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/11 09:52
2018/01/11 10:01
2018/01/11 14:49