# Find Statistics of Circular Blobs in Image

This example shows how to find the centroid, perimeter, and bounding box coordinates of circular blobs in an image by using the `Blob` `Analysis` block. The model also outputs the label matrix for reference.

### Load Data To MATLAB Workspace

Read an image into the MATLAB workspace.

```I = imread('coins.png'); ```

Load a binary mask containing the blobs that represent the segmented objects in the input image.

```load('maskImage','BW'); ```

Display the input image and the corresponding binary mask. The binary mask consists of 10 circular blobs of varied statistics.

```figure subplot(1,2,1) imshow(I,[]); title('Original Image'); subplot(1,2,2) imshow(BW) title('Circular Blobs'); ```

### Example Model

```open_system('ex_blkblobanalysis.slx') ```

The model computes the centroid, perimeter, and bounding box coordinates for the blobs in the binary image. The computed statistics is overlayed on the input image by using the `Draw` `Markers` and `Draw` `Rectangles` blocks.

The number of output blobs parameter of `Blob` `Analysis block` is set equal to the number of blobs in the binary mask. The `Draw` `Markers` block plots the computed centroids and the `Draw` `Rectangles` block draws the bounding boxes. The perimeter values are exported as variable `perimeter` to the MATLAB workspace. The label matrix is exported as variable `label` to the MATLAB workspace.

### Simulate and Display Results

Run the model and display the results using the `Video` `Viewer` block. The computed centroid and the bounding box are overlayed on the original image. The circular markers specifies the centroid of each blob and the rectangles around each blob specifies the computed bounding boxes.

```out = sim('ex_blkblobanalysis.slx'); ```

The first value in all the computed statistics correspond to the blob with label value 1. Similarly, the second values correspond to the blob with label value 2 and so on. The label value 0 corresponding to the background of the mask must be ignored.

Read the unique label values from the label matrix.

```lb = unique(out.label); ```

Display the perimeter values and the corresponding label values as a table.

```table(lb(2:end),out.perimeter,'VariableNames',{'Label','Perimeter'}) ```
```ans = 10x2 table Label Perimeter _____ _________ 1 194.17 2 170.02 3 191.58 4 156.37 5 195.58 6 186.51 7 190.75 8 192.17 9 167.44 10 168.85 ```

Display the label matrix.

```figure imshow(out.label,[]); colorbar title('Label Matrix'); ```