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

I want to calculate the area of the material included in each pucket?
2 Commenti
Image Analyst
il 26 Dic 2014
What is the material, and what is a pucket?
The lighting is very bad. Try to improve it and your task will be a LOT easier.
See my File Exchange for several image segmentation demos http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862
helwan ghgs
il 26 Dic 2014
Risposta accettata
Più risposte (1)
Image Analyst
il 26 Dic 2014
0 voti
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 Commenti
helwan ghgs
il 28 Dic 2014
helwan ghgs
il 28 Dic 2014
Image Analyst
il 28 Dic 2014
Modificato: Image Analyst
il 28 Dic 2014
Trust me, you will spend less time painting your disc than you would designing an image processing algorithm to handle exceptionally poor images. Paint the round part black and paint the ends of the lifters some bight non-sand color like white or bright green.
See my File Exchange for demos on image segmentation and color segmentation.
You'll see how to crop the region and redisplay it, which has the effect of scaling/magnifying it. You'll also learn how to segment the regions and measure things like area and perimeter and color/intensity.
helwan ghgs
il 30 Dic 2014
helwan ghgs
il 30 Dic 2014
Image Analyst
il 30 Dic 2014
I don't know what the "sacle" is. If you want the convex hull, you can use bwconvhull(BW, 'union'). Then you can find the centroid if you want that.
Until you can get your disc repainted, I suggest you just use impoly() or roipolyold() to hand-draw the lifter regions.
2. There are code samples for processing a bunch of files in the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F
helwan ghgs
il 30 Dic 2014
helwan ghgs
il 31 Dic 2014
Modificato: Image Analyst
il 31 Dic 2014
Image Analyst
il 31 Dic 2014
Before the loop just set a counter:
filesProcessed = 0;
Then right after you call imread(), increment it
filesProcessed = filesProcessed + 1;
then I guess you could set Area_1 to be filesProcessed, but I'm not really sure Area_1 would be a good name for the number of files that were processed, plus I don't know who Area_1 would be a matrix (2-D array) if it was just the number of files being processed.
helwan ghgs
il 1 Gen 2015
Image Analyst
il 1 Gen 2015
Modificato: Image Analyst
il 1 Gen 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.
Categorie
Scopri di più su Repeated Measures and MANOVA in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

