フィルターのクリア

K-NN Classsification on images

3 ビュー (過去 30 日間)
prahlad h
prahlad h 2017 年 3 月 16 日
コメント済み: Walter Roberson 2017 年 12 月 28 日
i1=dicomread('1.dcm');
i2=dicomread('2.dcm');
i3=dicomread('3.dcm');
i4=dicomread('4.dcm');
Sample=[i1;
i2];
Training=[i3;
i4];
Group=['1';
'2'];
k=2;
Class = knnclassify(Sample, Training, Group, k);
disp(Class);
I get an error - The length of GROUP must equal the number of rows in TRAINING.
The size of both the images are same.
It works when I'm using co-ordinates instead of i1, i2 and so on.
I know I should be using fitcknn, but it should work as well. Any inputs please?

採用された回答

Arthur Goldsipe
Arthur Goldsipe 2017 年 3 月 16 日
Hi,
Your input arguments Training and Group must have the same number of rows. I see that Group has only 2 rows, but Training probably has many more rows that than. Training consists of tow matrices stacked on top of each other. These matrices represent images as M-by-N matrices. So if all your images (i1, i2, i3, and i4) are all of size M-by-N, then Sample and Training have 2M rows. If your intention is to treat each image as a single entity, then you could construct Sample and Training as follows:
Sample = [i1(:) i2(:)]';
Training = [i3(:) i4(:)]';
That said, I don't think this classification approach is very useful if you only have one training example from each class.
-Arthur
  3 件のコメント
Arthur Goldsipe
Arthur Goldsipe 2017 年 3 月 16 日
i1(:) reshapes the 512x512 matrix into a (512x1) column vector. The square brackets concatenate . And ' is the transpose operator. So Sample ends up being a 2x512 matrix.
In this case, what I mean by a "single entity" is a "single row" in the matrix, because that's how knnclassify identifies what numbers belong to the same observation.
prahlad h
prahlad h 2017 年 3 月 17 日
Sorry for the noob question but what do you mean by a column vector? When you're reshaping 512x512 matrix into a 512x1 column vector, is there any loss in the image?
Also, a single row, does that mean that all the pixels are not compared when knnclassify is used?
It's working fine but I just wanted to know for my understanding!

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2017 年 3 月 17 日
I know you've already accepted an answer, but you might want to check out my knn demo.
  1 件のコメント
prahlad h
prahlad h 2017 年 3 月 17 日
Sure. I'll look at it. It would help me with understanding it a little better. I've been through your other demos on segmentation and thresholding. They are amazing!

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by