質問編集履歴

6

誤字

2018/10/14 08:39

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- MATLABにおける2次元ディジタル信号処理のコードについて
1
+ MATLABにおける信号処理のコード
test CHANGED
File without changes

5

誤字

2018/10/14 08:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  ###発生している問題・エラーメッセージ
8
8
 
9
- デジタル信号処理とコードの理解がそれぞれ十分ではないため、フィルタの係数を減らすために以下のようにコードを書き換えると、画像の色が濃くなるという状況が起きています。フィルタ係数は現状6なのですが、4にした場合、どのようにコードを変更することが適切なのでしょうか。
9
+ デジタル信号処理とコードの理解がそれぞれ十分ではないため、フィルタの係数を減らすために以下のようにコードを書き換えると、画像の色が濃くなるという状況が起きています。
10
+
11
+
10
12
 
11
13
 
12
14
 
@@ -22,39 +24,11 @@
22
24
 
23
25
  % フィルター係数4つ(真ん中の2つを削除)
24
26
 
25
- fir = [-0.1513 0.1926 0.1926 -0.1513];
27
+ fir = [];
26
28
 
27
29
  dv = double(zeros(a,b,c));
28
30
 
29
- dh = double(zeros(a,b,c));
30
31
 
31
- for i=4:a-3
32
-
33
- for j=4:b-3
34
-
35
- for k=1:c
36
-
37
- dv(i,j,k) = 0.0;
38
-
39
- dh(i,j,k) = 0.0;
40
-
41
- %係数が4つなので-3から0の4つに変更
42
-
43
- for a = -3:0
44
-
45
- dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));
46
-
47
- dh(i,j,k) = dh(i,j,k)+fir(a+4)*double(picture(i+a,j, k));
48
-
49
- end
50
-
51
- end
52
-
53
- end
54
-
55
- end
56
-
57
- % 符号なしのint型をもつと考えられる
58
32
 
59
33
  picture = uint8((dv+dh)/2.0);
60
34
 
@@ -78,9 +52,9 @@
78
52
 
79
53
 
80
54
 
81
- % フィルター係数6
55
+ % フィルター係数4
82
56
 
83
- fir = [-0.1513 0.1926 0.5501 0.5501 0.1926 -0.1513];
57
+ fir = [];
84
58
 
85
59
  dv = double(zeros(a,b,c));
86
60
 
@@ -92,17 +66,7 @@
92
66
 
93
67
  for k=1:c
94
68
 
95
- dv(i,j,k) = 0.0;
69
+
96
-
97
- dh(i,j,k) = 0.0;
98
-
99
- for a = -3:2
100
-
101
- dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));
102
-
103
- dh(i,j,k) = dh(i,j,k)+fir(a+4)*double(picture(i+a,j, k));
104
-
105
- end
106
70
 
107
71
  end
108
72
 
@@ -117,83 +81,3 @@
117
81
  image(picture);
118
82
 
119
83
  ```
120
-
121
-
122
-
123
- ###試したこと
124
-
125
- 係数を足し合わせたところ、1.1828という値が出たため、これを保持するために
126
-
127
- fir = [-0.1513 0.7427 0.7427 -0.1513];
128
-
129
- というフィルター係数を用いてコードを書いたところ、暗くなりませんでした。
130
-
131
- フィルタ係数を4つにして、
132
-
133
- for a = -3:0
134
-
135
- のみ書き換えましたが、他に変更する部分はないのでしょうか。
136
-
137
-
138
-
139
- ```Matlab
140
-
141
- % ローパスフィルターを画像に適用する
142
-
143
- picture = imread('sample.bmp');
144
-
145
- [a,b,c] = size(picture);
146
-
147
-
148
-
149
- % フィルター係数4つ
150
-
151
- fir = [-0.1513 0.7427 0.7427 -0.1513];
152
-
153
- dv = double(zeros(a,b,c));
154
-
155
- dh = double(zeros(a,b,c));
156
-
157
- for i=4:a-3
158
-
159
- for j=4:b-3
160
-
161
- for k=1:c
162
-
163
- dv(i,j,k) = 0.0;
164
-
165
- dh(i,j,k) = 0.0;
166
-
167
- %4つ
168
-
169
- for a = -3:0
170
-
171
- dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));
172
-
173
- dh(i,j,k) = dh(i,j,k)+fir(a+4)*double(picture(i+a,j, k));
174
-
175
- end
176
-
177
- end
178
-
179
- end
180
-
181
- end
182
-
183
- % 符号なしのint型をもつと考えられる
184
-
185
- picture = uint8((dv+dh)/2.0);
186
-
187
- image(picture);
188
-
189
- ```
190
-
191
-
192
-
193
- ###補足情報(言語/FW/ツール等のバージョンなど)
194
-
195
- フィルタの係数(タップ数)と2次元ディジタル信号処理に関しては、以下の参考資料を読んで少しでも理解しようとしています。
196
-
197
- [フィルタの係数に関して](http://www.densikairo.com/Development/Public/study_dsp/464952A5D5A5A3A5EBA5BFA4CBB4D8A4B7A4C6.html)
198
-
199
- [2次元ディジタル信号処理に関して](http://www.mk.ecei.tohoku.ac.jp/jspmatlab/pdf/matdsp6.pdf)

4

試したことの追記

2018/10/14 08:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -122,7 +122,71 @@
122
122
 
123
123
  ###試したこと
124
124
 
125
+ 係数を足し合わせたところ、1.1828という値が出たため、これを保持するために
126
+
127
+ fir = [-0.1513 0.7427 0.7427 -0.1513];
128
+
129
+ というフィルター係数を用いてコードを書いたところ、暗くなりませんでした。
130
+
131
+ フィルタ係数を4つにして、
132
+
133
+ for a = -3:0
134
+
135
+ のみ書き換えましたが、他に変更する部分はないのでしょうか。
136
+
137
+
138
+
139
+ ```Matlab
140
+
141
+ % ローパスフィルターを画像に適用する
142
+
143
+ picture = imread('sample.bmp');
144
+
125
- 課題に対してアプローチしたことを記載してください
145
+ [a,b,c] = size(picture);
146
+
147
+
148
+
149
+ % フィルター係数4つ
150
+
151
+ fir = [-0.1513 0.7427 0.7427 -0.1513];
152
+
153
+ dv = double(zeros(a,b,c));
154
+
155
+ dh = double(zeros(a,b,c));
156
+
157
+ for i=4:a-3
158
+
159
+ for j=4:b-3
160
+
161
+ for k=1:c
162
+
163
+ dv(i,j,k) = 0.0;
164
+
165
+ dh(i,j,k) = 0.0;
166
+
167
+ %4つ
168
+
169
+ for a = -3:0
170
+
171
+ dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));
172
+
173
+ dh(i,j,k) = dh(i,j,k)+fir(a+4)*double(picture(i+a,j, k));
174
+
175
+ end
176
+
177
+ end
178
+
179
+ end
180
+
181
+ end
182
+
183
+ % 符号なしのint型をもつと考えられる
184
+
185
+ picture = uint8((dv+dh)/2.0);
186
+
187
+ image(picture);
188
+
189
+ ```
126
190
 
127
191
 
128
192
 

3

誤字訂正

2017/11/30 02:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -38,9 +38,7 @@
38
38
 
39
39
  dh(i,j,k) = 0.0;
40
40
 
41
- % apply filter
42
-
43
- //係数が4つなので-3から0の4つに変更
41
+ %係数が4つなので-3から0の4つに変更
44
42
 
45
43
  for a = -3:0
46
44
 
@@ -98,8 +96,6 @@
98
96
 
99
97
  dh(i,j,k) = 0.0;
100
98
 
101
- % apply filter
102
-
103
99
  for a = -3:2
104
100
 
105
101
  dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));

2

コードの修正を行いました

2017/11/30 02:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  //係数が4つなので-3から0の4つに変更
44
44
 
45
- for r = -3:0
45
+ for a = -3:0
46
46
 
47
47
  dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));
48
48
 
@@ -100,7 +100,7 @@
100
100
 
101
101
  % apply filter
102
102
 
103
- for r = -3:2
103
+ for a = -3:2
104
104
 
105
105
  dv(i,j,k) = dv(i,j,k)+fir(a+4)*double(picture(i,j+a, k));
106
106
 

1

タグの編集

2017/11/29 12:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes