Index in position 1 exceeds array bounds (must not exceed 1).error in SVM

1 Ansicht (letzte 30 Tage)
Keerthi  D
Keerthi D am 8 Mai 2021
Bearbeitet: BC am 8 Mai 2021
when i run this code ,it shows like Index in position 1 exceeds array bounds (must not exceed 1).error in line 208
TrainingSet=[ DF(1,:);DF(2,:);DF(3,:);DF(4,:);DF(5,:);DF(6,:);DF(7,:);DF(8,:);DF(9,:);DF(10,:);DF(11,:);DF(12,:);...
DF(13,:);DF(14,:);DF(15,:);DF(16,:);DF(17,:);DF(18,:);DF(19,:);DF(20,:);DF(21,:);DF(22,:);DF(23,:);DF(24,:);...
DF(25,:);DF(26,:);DF(27,:);DF(28,:);DF(29,:);DF(30,:);DF(31,:);DF(32,:);DF(33,:);DF(34,:);DF(35,:);DF(36,:);...
DF(37,:);DF(38,:);DF(39,:);DF(40,:);DF(41,:);DF(42,:);DF(43,:);DF(44,:);DF(45,:);DF(46,:);DF(47,:);DF(48,:);DF(49,:);DF(50,:) ]
how to slove that ,please help through code.
clc
clear all
close all
cd segmented_images
DF=[]
for i=1:50
i
str1=int2str(i)
str2=strcat(str1,'.jpg');
rgbImage=imread(str2);
%%[filename, pathname] = uigetfile({'*.*';'*.bmp';'*.jpg';'*.gif'}, 'Pick a Leaf Image File');
%%rgbImage = imread([pathname,filename]);
rgbImage = imresize(rgbImage,[256,256]);
bplane= rgbImage(:,:,3) - 0.5*( rgbImage(:,:,1)) - 0.5*( rgbImage(:,:,2));
%figure
%imshow(bplane)
%Extract out purple cells
%figure
BW= bplane >29;
%imshow(BW)
%%Remove noise 100 pixels or less
BW2=bwareaopen(BW,350);
%subplot(2,4,6);imshow(BW2);
%title('WBC Dilated Image');
%%calculate area of regions
%cellStats = regionprops(BW2, 'all');
%cellAreas = [cellStats(:).Area];
%%Superimpose onto original image
%figure,imshow(image),hold on
%himage=imshow(BW2);
%set(himage, 'AlphaData', 0.5);
CC= bwconncomp(BW2);
count = CC.NumObjects;
stats=regionprops(CC,'Area','Circularity','Centroid','Eccentricity','EquivDiameter','Extent','FilledArea','Perimeter','MajorAxisLength','MinorAxisLength','Image','Solidity');
%Centroid=reshape([stats.Centroid],2,CC.NumObjects)
majors=[stats.MajorAxisLength];
minors=[stats.MinorAxisLength];
Area=[stats.Area]
Circularity =[stats.Circularity]
Perimeter=[stats.Perimeter]
diameters=[stats.EquivDiameter]
radii=[diameters./2]
%image compression using DCT
% Convert to grayscale if image is RGB
if ndims(rgbImage) == 3
img = rgb2gray( rgbImage);
end
%figure, imshow(img); title('Gray Scale Image');
%img = rgb2gray(seg_img)
J=dct2(img);
%imshow(log(abs(J)),[]);
%colormap parula
%colorbar
J(abs(J)<10) =0;
K= idct2(J);
K=rescale(K);
%subplot(2,4,5);imshow(K);
%montage({I,K})
%title('Compressed Image');
% Create the Gray Level Cooccurance Matrices (GLCMs)
glcms = graycomatrix(K);
% Derive Statistics from GLCM
stats = graycoprops(glcms,'Contrast Correlation Energy Homogeneity');
Contrast = stats.Contrast
Correlation = stats.Correlation
Energy = stats.Energy
Homogeneity = stats.Homogeneity
Mean = mean2(rgbImage)
Standard_Deviation = std2(rgbImage)
Entropy = entropy(rgbImage)
%RMS = mean2(rms(rgbImage));
%Skewness = skewness(rgbImage)
Variance = mean2(var(double(rgbImage)))
a = sum(double(rgbImage(:)));
Smoothness = 1-(1/(1+a))
Kurtosis = kurtosis(double(rgbImage(:)))
Skewness = skewness(double(rgbImage(:)))
% Inverse Difference Movement
m = size(rgbImage,1);
n = size(rgbImage,2);
in_diff = 0;
for i = 1:m
for j = 1:n
temp = rgbImage(i,j)./(1+(i-j).^2);
in_diff = in_diff+temp;
end
end
IDM = double(in_diff)
WBC_COUNT=count
FEAT = horzcat(1,[Contrast Correlation Energy Homogeneity Mean Standard_Deviation Entropy Variance Smoothness Kurtosis Skewness IDM diameters radii Area Circularity Perimeter]);
DF=[DF,FEAT];
end
cd ..
inp=input('enter image:')
rgbImage=imread(inp);
%[filename, pathname] = uigetfile({'*.*';'*.bmp';'*.jpg';'*.gif'}, 'Pick a wbc Image File');
%rgbImage = imread([pathname,filename]);
%rgbImage = imresize(rgbImage,[256,256]);
% [rows columns numberOfColorBands] = size(rgbImage);
% Enlarge figure to full screen.
%set(gcf, 'Position', get(0,'Screensize'));
bplane= rgbImage(:,:,3) - 0.5*( rgbImage(:,:,1)) - 0.5*( rgbImage(:,:,2));
%figure
%imshow(bplane)
%Extract out purple cells
%figure
BW= bplane >29;
%imshow(BW)
%%Remove noise 100 pixels or less
BW2=bwareaopen(BW,350);
%subplot(2,4,6);imshow(BW2);
%title('WBC Dilated Image');
%%calculate area of regions
%cellStats = regionprops(BW2, 'all');
%cellAreas = [cellStats(:).Area];
%%Superimpose onto original image
%figure,imshow(image),hold on
%himage=imshow(BW2);
%set(himage, 'AlphaData', 0.5);
CC= bwconncomp(BW2);
count = CC.NumObjects;
stats=regionprops(CC,'Area','Circularity','Centroid','Eccentricity','EquivDiameter','Extent','FilledArea','Perimeter','MajorAxisLength','MinorAxisLength','Image','Solidity');
%Centroid=reshape([stats.Centroid],2,CC.NumObjects)
majors=[stats.MajorAxisLength];
minors=[stats.MinorAxisLength];
Area=[stats.Area]
Circularity =[stats.Circularity]
Perimeter=[stats.Perimeter]
diameters=[stats.EquivDiameter]
radii=[diameters./2]
%image compression using DCT
% Convert to grayscale if image is RGB
if ndims(rgbImage) == 3
img = rgb2gray( rgbImage);
end
%figure, imshow(img); title('Gray Scale Image');
%img = rgb2gray(seg_img)
J=dct2(img);
%imshow(log(abs(J)),[]);
%colormap parula
%colorbar
J(abs(J)<10) =0;
K= idct2(J);
K=rescale(K);
%subplot(2,4,5);imshow(K);
%montage({I,K})
%title('Compressed Image');
% Create the Gray Level Cooccurance Matrices (GLCMs)
glcms = graycomatrix(K);
% Derive Statistics from GLCM
stats = graycoprops(glcms,'Contrast Correlation Energy Homogeneity');
Contrast = stats.Contrast
Correlation = stats.Correlation
Energy = stats.Energy
Homogeneity = stats.Homogeneity
Mean = mean2(rgbImage)
Standard_Deviation = std2(rgbImage)
Entropy = entropy(rgbImage)
%RMS = mean2(rms(rgbImage));
%Skewness = skewness(img)
Variance = mean2(var(double(rgbImage)))
a = sum(double(rgbImage(:)));
Smoothness = 1-(1/(1+a))
Kurtosis = kurtosis(double(rgbImage(:)))
Skewness = skewness(double(rgbImage(:)))
% Inverse Difference Movement
m = size(rgbImage,1);
n = size(rgbImage,2);
in_diff = 0;
for i = 1:m
for j = 1:n
temp = rgbImage(i,j)./(1+(i-j).^2);
in_diff = in_diff+temp;
end
end
IDM = double(in_diff)
WBC_COUNT=count
QF = horzcat(1,[Contrast Correlation Energy Homogeneity Mean Standard_Deviation Entropy Variance Smoothness Kurtosis Skewness IDM diameters radii Area Circularity Perimeter]);
%multi svm
TrainingSet=[ DF(1,:);DF(2,:);DF(3,:);DF(4,:);DF(5,:);DF(6,:);DF(7,:);DF(8,:);DF(9,:);DF(10,:);DF(11,:);DF(12,:);...
DF(13,:);DF(14,:);DF(15,:);DF(16,:);DF(17,:);DF(18,:);DF(19,:);DF(20,:);DF(21,:);DF(22,:);DF(23,:);DF(24,:);...
DF(25,:);DF(26,:);DF(27,:);DF(28,:);DF(29,:);DF(30,:);DF(31,:);DF(32,:);DF(33,:);DF(34,:);DF(35,:);DF(36,:);...
DF(37,:);DF(38,:);DF(39,:);DF(40,:);DF(41,:);DF(42,:);DF(43,:);DF(44,:);DF(45,:);DF(46,:);DF(47,:);DF(48,:);DF(49,:);DF(50,:) ]
GroupTrain={'1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '2' '2' '2' '2' '2' '2' '2' '2' '2' '2'...
'3' '3' '3' '3' '3' '3' '3' '3' '3' '3' '4' '4' '4' '4' '4' '4' '4' '4' '4' '4' '5' '5' '5' '5' '5' '5' '5' '5' '5' '5'}
TestSet=QF
SVMModels=cell(5,1);
Y=GroupTrain
classes=unique(Y);
rng(1);%for reproducibility
for j=1:numbe1(classes)
indx=strcmp(Y',classes(j)); %create binary classes for each classifier
SVMModel{i}=fitcsvm(DF,indx,'ClassNames',[false true],'Standardize',true,...
'KernelFunction','rbf','BoxContraint',1);
end
XGrid=QF;
for j=1:nume1(classes)
[~,Score] = predict(SVMMOdels{j},XGrid);
Scores(:,j)=Score(:,2);% second column contains positive class score
end
[~,maxScore]=max(Scores,[],2);
result=maxScore;
figure,imshow(rgbImage)
title ('input image')
if result==1
msgbox('Neutrophil')
elseif result==2
msgbox('Eosinophil')
elseif result==3
msgbox('Monocyte')
elseif result==4
msgbox('Lymphocyte')
elseif result==5
msgbox('Basophil')
end
  3 Kommentare
Scott MacKenzie
Scott MacKenzie am 8 Mai 2021
Actually, what I meant was using the code button when creating your question to change a block of text -- the code you inserted -- to MATLAB code:
Then, it's easier for people to read your question and they can easily copy your code into their own MATLAB editor window and run it.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Cris LaPierre
Cris LaPierre am 8 Mai 2021
The error appears to be with how you are indexing DF. The error message is telling you the index in position 1 (rows) exceeds the size of the array. It then tells you the maximum allowable number is 1. Clearly you expect there to be many more rows than 1, so the code that creates DF is not doing what you expect.
  1 Kommentar
BC
BC am 8 Mai 2021
Bearbeitet: BC am 8 Mai 2021
To add to this all I can see with DF before it's indexed is:
DF=[]
...
DF=[DF,FEAT];
So it seems like DF is just a blank value concatenated with FEAT.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Statistics and Machine Learning Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by