Unable to find the number of pixels on the boundary of a ROI

1 回表示 (過去 30 日間)
Warid Islam
Warid Islam 2021 年 6 月 30 日
コメント済み: Image Analyst 2021 年 7 月 1 日
Hi,
I want to find the number of pixels on the boundary of a ROI. I also want to find the number of pixels inside the ROI. I tried the regionprops method but it is throwing me an error message. Any suggestions would be appreciated.
myFolder = 'D:\regionGrowing_MLT\newim\Segmentation Results';
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isfolder(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s\nPlease specify a new folder.', myFolder);
uiwait(warndlg(errorMessage));
myFolder = uigetdir(); % Ask for a new one.
if myFolder == 0
% User clicked Cancel
return;
end
end
% Get a list of all files in the folder with the desired file name pattern.
filePattern = fullfile(myFolder, '*.jpg'); % Change to whatever pattern you need.
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(theFiles(k).folder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
imageArray = imread(fullFileName);
imageArray=imbinarize(imageArray);
s = regionprops(imageArray,'Area','Perimeter');
s(k,:)=s;
end
The following error message is displayed:
Unable to perform assignment because the size
of the left side is 1-by-1 and the size of
the right side is 5-by-1.
Error in im3d (line 24)
s(k,:)=s;

採用された回答

Image Analyst
Image Analyst 2021 年 6 月 30 日
Try this:
perimImage = bwperim(imageArray);
numPerimPixels = nnz(perimImage);
or
boundaries = bwboundaries(imageArray);
numPerimPixels = 0;
for k = 1 : length(boundaries)
thisBoundary = boundaries{k};
numPerimPixels = numPerimPixels + size(thisBoundary, 1);
end
  2 件のコメント
Warid Islam
Warid Islam 2021 年 6 月 30 日
That worked. If I want to find the area of my ROI, is bwarea the appropriate way to proceed?
Image Analyst
Image Analyst 2021 年 7 月 1 日
bwarea gives an area weighted by the shape of the boundary, while regionprops() or nnz() is strictly a pixel count. Just depends on how you want it.
for this image
0 1
1 1
What is the area? Is it 3 pixels? Or is it half a pixel? Neither is wrong - it's just how you interpret "area". Do you consider a pixel like a little block or tile? Or are you going from pixel center to pixel center.
What is the length of the 1 region here:
0 1 1 1 0
Is it 3? Or is it 2 (going center to center)?

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeNaming Conventions についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by