How do I count certain values within a column of a table?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am currently working on a project that aims to create a program that counts cells on a specific image using image processing. I currently have the image altered so that the cells apear as white circular shapes on a solid black background (pictured below.)
I then used the code:
stats = regionprops('table',WBcells,'Centroid','MajorAxisLength','MinorAxisLength');
which produced the following table:
Now I need to figureout how to count values from the MajorAxisLength Column that are larger than 5 pixels and smaller than 26 pixels. If someone could please help me with this or give suggestions on a better way to count the cells that would be very helpful!
0 Kommentare
Antworten (2)
Star Strider
am 25 Jan. 2022
One approach —
MajorAxisLength = 30*rand(15,1)
Lv = (MajorAxisLength >= 5) & (MajorAxisLength <= 26)
MeetCriteria = nnz(Lv)
PctMeetCriteria = 100*MeetCriteria/numel(MajorAxisLength)
See if that produces the desired result.
.
2 Kommentare
Star Strider
am 30 Jan. 2022
It counts all the cells and returns true only for those that meet the criteria. Then, it counts the true values to produce the ‘MeetCriteria’ variable. These can be combined into one line if desired:
MeetCriteria = nnz((MajorAxisLength >= 5) & (MajorAxisLength <= 26))
I kept them separate to demonstrate how the code works. (The ‘PctMeetCriteria’ is supplied to standardise the result.)
yanqi liu
am 26 Jan. 2022
clc; clear all; close all;
img = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/873730/image.png');
im = imcrop(img, [88 117 410 318]);
J = rgb2hsv(im);
bw = im2bw(mat2gray(J(:,:,2)), 0.6);
WBcells = imopen(bw, strel('disk', 3));
stats = regionprops(WBcells,'Centroid','MajorAxisLength','MinorAxisLength');
% count values from the MajorAxisLength Column that are larger than 5 pixels and smaller than 26 pixels
ma = cat(1, stats.MajorAxisLength);
ce = cat(1, stats.Centroid);
ind = ma > 5 & ma < 26;
figure;
imshow(im);
hold on;
plot(ce(ind,1), ce(ind,2), 'r*');
Siehe auch
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!