Clear Filters
Clear Filters

Why the output image is not visible after k means clustering ?

1 view (last 30 days)
Here is the code,
fname = dir(fullfile(img_folder,'*.jpg'))
grayImage= imread('calculi-140.jpg');
[rows, columns, numberOfColorChannels] = size(grayImage);
if numberOfColorChannels == 3
fprintf('That was a color image. I am converting it to grayscale.\n');
grayImage = rgb2gray(grayImage);
grayImage = imgaussfilt(grayImage);
gr= imadjust(grayImage,stretchlim(grayImage),[]);
features = extractLBPFeatures(gr);
numberOfClasses = 3; %k means clustering
indexes = kmeans(features(:), numberOfClasses);
classImage = reshape(indexes, size(features));
figure, imshow(classImage);
I am getting a white linea as the output
The input and output images are attached. Pls check and help me to solve this error. Any help is appreciated.
  1 Comment
KSSV on 31 Aug 2021
It is because, you are inputting an array into kmeans.
features = extractLBPFeatures(gr);
Check features, this is 1X59 array.

Sign in to comment.

Answers (1)

Sahil Jain
Sahil Jain on 3 Sep 2021
Hi. As mentioned by another community member, the "extractLBPFeatures" function returns a vector of features which is why the output of your k-means is also a vector. To not have the output as a white line, you can try using "imshow(classImage, [])". This will display the minimum value of "classImage" as black and the maximum value as white.
  1 Comment
MINO GEORGE on 3 Sep 2021
Thank you for your reply sir. I tried imshow(classImage, []), there is no change in the output. I have attached the new output image.

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!