質問編集履歴

1

試したこと2を追記

2017/12/06 03:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
  end
88
88
 
89
- R(i,j) = mc;
89
+ Boldblack(i,j) = mc;
90
90
 
91
91
  end
92
92
 
@@ -102,7 +102,7 @@
102
102
 
103
103
  ###発生している問題・エラーメッセージ
104
104
 
105
- ###試したこと
105
+ ###試したこと1
106
106
 
107
107
  ```matlab
108
108
 
@@ -131,3 +131,95 @@
131
131
  change = rgb2(picture);
132
132
 
133
133
  ```
134
+
135
+
136
+
137
+ ###試したこと2
138
+
139
+ 以下のようにrgb2gray関数部分を適用しないコードを書くと、
140
+
141
+ eが3つあるので下記のコードではモノクロで更に3枚表示されてしまう状況です。
142
+
143
+ rgb2gray関数を適用しなくてもカラー写真がモノクロになってしまっています。
144
+
145
+ ```matlab
146
+
147
+ picture = imread('sample.jpeg');
148
+
149
+ %change = rgb2gray(picture);
150
+
151
+ imshow(picture);
152
+
153
+ e = morph(picture, 'dilate');
154
+
155
+ e = morph(e, 'dilate');
156
+
157
+ e = morph(e, 'dilate');
158
+
159
+ imshow(e);
160
+
161
+
162
+
163
+ function Boldblack = morph(picture, op)
164
+
165
+ [r, c] = size(picture);
166
+
167
+ Boldblack = uint8(zeros(r,c));
168
+
169
+ for i=1:r
170
+
171
+ for j=1:c
172
+
173
+ mc = picture(i,j);
174
+
175
+ for k = -1:1
176
+
177
+ for s = -1:1
178
+
179
+ cr = i+k;
180
+
181
+ cc = j+s;
182
+
183
+ if (i+k<1)
184
+
185
+ cr = abs(i+k)+1;
186
+
187
+ elseif (i+k>r)
188
+
189
+ cr = 2*r-i-k;
190
+
191
+ end
192
+
193
+ if (j+s<1)
194
+
195
+ cc = abs(j+s)+1;
196
+
197
+ elseif (j+s>c)
198
+
199
+ cc = 2*c - j-s;
200
+
201
+ end
202
+
203
+ if picture(cr,cc) < mc && strcmp(op, 'dilate')
204
+
205
+ mc = picture(cr,cc);
206
+
207
+ elseif picture(cr,cc) > mc && strcmp(op, 'erode')
208
+
209
+ mc = picture(cr,cc);
210
+
211
+ end
212
+
213
+ end
214
+
215
+ end
216
+
217
+ Boldblack(i,j) = mc;
218
+
219
+ end
220
+
221
+ end
222
+
223
+ end
224
+
225
+ ```