Calculating the number of pixels inside a freehand region.
조회 수: 7 (최근 30일)
이전 댓글 표시
I have a binary image, what I want to do is select a freehand region and then find out the total number of white and black pixels inside that region.
댓글 수: 0
채택된 답변
Spandan Tiwari
2014년 7월 11일
Since you are already using imfreehand, you can use the method named createMask available in the imfreehand object to rasterize the marked region into a binary image. Then you can just use logical AND to combine the binary image with your original image and sum over all the pixels in the image to get the desired count. I think the code would look something as follows. Say your image is called I.
figure, imshow(I)
f = imfreehand;
% Then draw the region using imfreehand tool
bw = createMask(f);
outI = bw.*I;
numPixelsInsideRegion = sum(outI(:))
댓글 수: 4
Rukevwe Rim-Rukeh
2022년 4월 25일
can you loop the freehand command, so you dont have to continously draw the area
Image Analyst
2022년 4월 25일
Sure. Just put it in a loop and OR it into the "master" binary image
finalMask = false(rows, columns)
for k = 1 : 10
thisMask = (however you get it, like with drawfreehand());
finalMask = finalMask | thisMask;
end
추가 답변 (1개)
Image Analyst
2014년 7월 1일
This is exactly what my freehand drawing demo does. See attached.
댓글 수: 4
Image Analyst
2022년 4월 25일
See my demo to get the coordinates of the hand-drawn shape. Let's call them x, y, so first create a mask with poly2mask, then use nnz()
[imageRows, imageColumns = size(originalBinaryImage);
insideShape = poly2mask(x, y, imageRows, imageColumns);
newMask = originalBinaryImage & insideShape;
pixelCount = nnz(newMask)
참고 항목
카테고리
Help Center 및 File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!