MATLAB Answers

how to select a specified region in an image based on location and calculate its area

10 views (last 30 days)
I want to calculate the area of the material included in each pucket?
  2 Comments
helwan ghgs
helwan ghgs on 26 Dec 2014
Thanks for your interest in answering me.
The material is sand, and the bucket is the lifter used to carry the material and then cascading it (make it fall) vertically.
I want to write a simple code to calculate the vertical area of the material carried by each bucket. and I want to define each bucket location by its angular position. i.e. the first bucket at the left down side where the angle said to be zero (horizontal) and then the next one at angle 30 from the horizontal.....
I tried to use imageJ software first to make filtration but it failed because I found the logic selection in bw all white?

Sign in to comment.

Accepted Answer

Mohammad Abouali
Mohammad Abouali on 26 Dec 2014
use p=roipoly() to draw a polygon around the area you want to measure it's area.
then the area would be sum(p(:))*pixelsize^2 if you want to automate this, then you need to first write a code that detects those region that you want.
  2 Comments
helwan ghgs
helwan ghgs on 28 Dec 2014
But, I want matlab to draw such polygons autmatically by detecting the sand color which is yellow......and do not how?

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 26 Dec 2014
I don't know what/where the bucket is, what/where the sand is, and where the shadows are. The lighting is horrible and could definitely be improved. Plus who's idea was it to have a sand-colored background when you want to find sand pouring in front of it?!?! The disc thing should be black or at least some contrasting color. I'd fix all that first since it's far easier to design an image analysis algorithm if you have a good image to start with.
  11 Comments
Image Analyst
Image Analyst on 1 Jan 2015
You said "I need Area_1 to be a matrix of the number of the number of image files being processed. " A matrix is a 2D array and I already saw that you were using that equation for one of them so I figured the second column would be the "number" like you asked for. But now it seems like you just want a row or column vector (1-D array) rather than a matrix. To get that, simply index Area_1 with filesProcessed. Don't use k because some k's may be skipped if there is no image for that k.
Area_1(filesProcessed) = (d_1 / b) * 1963.5;
You don't need to credit me specifically in your work but maybe you can just say something like "I wish to thank the volunteers in the MATLAB Answers forum for their helpful guidance and suggestions" or something similar.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by