Effacer les filtres
Effacer les filtres

Find end to end distance of fusing droplets

2 vues (au cours des 30 derniers jours)
Archishman Ghosh
Archishman Ghosh le 28 Avr 2020
I have a series of images of fusing droplets. I would like to get the horizontal end to end distance of the fusing droplets. This distance shortens over time as the two droplets fuse.
I have tried the regionprops boundingbox approach but it doesn't seem to work. Several tiny rectangles form around the droplets. Perhaps the image needs to be cleaned up after turning into binary.
Does anyone have an alternative approach to this?
function [] = boundingbox(file,level)
image=imread(file);
figure
BW=im2bw(image,level);
BW = ~BW;
imshow(BW)
st = regionprops(BW, 'BoundingBox' );
for k = 1 : length(st)
thisBB = st(k).BoundingBox;
rectangle('Position', [thisBB(1),thisBB(2),thisBB(3),thisBB(4)],...
'EdgeColor','r','LineWidth',2 )
end
end

Réponses (1)

Archishman Ghosh
Archishman Ghosh le 28 Avr 2020
This works only for images with very high contrast. So the code is limited to the contrast. Anyway to enhance contrast without introducing noise in an image?
function D = boundingbox(file,level)
image=imread(file);
figure
BW=im2bw(image,level);
%BW = ~BW;
imshow(BW)
BBs = [];
measurements = regionprops(BW, 'BoundingBox', 'Area');
for k = 1 : length(measurements)
thisBB = measurements(k).BoundingBox;
%rectangle('Position', [thisBB(1),thisBB(2),thisBB(3),thisBB(4)],...
%'EdgeColor','r','LineWidth',2 )
BBs = [BBs;thisBB];
end
areas=cat(1,measurements.Area);
[sortedAreas, sortingIndexes] = sort(areas, 'descend');
fusionindex = sortingIndexes(2);
rectangle('Position', [BBs(fusionindex,1),BBs(fusionindex,2),BBs(fusionindex,3),BBs(fusionindex,4)],...
'EdgeColor','r','LineWidth',2 )
D = BBs(fusionindex,3);
end

Community Treasure Hunt

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

Start Hunting!

Translated by