How to solve Function 'subsindex' is not defined of class 'strel'

3 views (last 30 days)
i ran this code :
my_folder = 'D:\pcd\tester\ocr\training_set\training_set';
filenames =dir(fullfile(my_folder,'*.bmp'));
total_images = numel(filenames);
input108_2 = [];
se = strel('square', 3);
pad = 2;
%ft =[];
for n = 1 : total_images
fullname = fullfile(my_folder, filenames(n).name);
%our_images = logical(imread(fullname));
rgb = rgb2gray(imread(fullname));
bw = im2bw(rgb, graythresh(rgb));
bw2 = bwareaopen(bw, 15);
%bw2 = padarray(bw2, [pad pad], 'both'); % Adding Pads
iedge = edge(uint8(bw2)); % edge detection operation
imdilate = imdilate(iedge, se); % dilation operation
imfill = imfill(imdilate, 'holes');
our_images = imfill & bw2;
thinImage = bwmorph(our_images, 'thin', Inf); % thinning Operation
%thinImage = thinImage(pad+1:end-1, pad+1:end-1); % Removing Pads
feature = feature_extract(thinImage);
input108_2 = [input108_2; feature'];
end
but i got this error message:
Function 'subsindex' is not defined for values of class 'strel'.
Error in dataTrain (line 17)
imdilate = imdilate(iedge, se); % dilation operation
i'd seen for line that given error. but i think there isn't something wrong with it.
Please someone help me to solve this.
Thanks before

Accepted Answer

Rik
Rik on 16 Dec 2018
You have overwritten the function imdilate with a variable imdilate. So now, the second time your code gets to that line it tries to subindex the variable imdilate with the iedge and se variables. The easy fix is by using a different name for the variable.
im_dilate = imdilate(iedge, se); % dilation operation
im_fill = im_fill(im_dilate, 'holes');
our_images = im_fill & bw2;
  4 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!