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

Here is the code,
img_folder='C:\Users\COMSOL\Documents\MATLAB\kss';
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);
end
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

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)

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

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.

Products

Release

R2020a

Asked:

on 31 Aug 2021

Commented:

on 3 Sep 2021

Community Treasure Hunt

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

Start Hunting!