A clot consists of several key components: Fibrin, platelets, as well as surrounding blood cells (leukocytes and red blood cells). Our microscopic images capture fluorescent signals of labeled thrombus components, with the following labeling scheme: blue is for plasma (dextran), green for fibrinogen/fibrin, red for platelets, and black for everything else (i.e., excluding the above three fluorescently tagged components), as shown in Figure 1. Therefore, our task is to identify and analyze the structures (or shapes) formed by red voxels and green voxels plus the surrounding voxels of "black" cells in 3D microscopic images.
As we observed from the image data, fibrin, platelets (or the red and green voxels), and surrounding black cells cluster together to form clots. However, other fibrin and platelet fluorophores also scatter around in the 3D images (since these clot components are supplied continuously by the blood flow along the vessel). That is, the scattering fluorophores may represent true data points. Thus, in this setting, while we see clusters of red and green points in the thrombi (plus surrounding black cells), the 3D space is also scattered with many other red and green points that are not part of any clot. Thus, our problem is to first identify the clusters (or galaxies) of discrete red/green points or voxels plus surrounding black voxels while at the same time ignore the "isolated" red/green points (or isolated stars), and then from the resulting clusters, reconstruct the (continuous) surfaces and volumes of the clots.
The input to our clot segmentation algorithm is a vertical sequence of 2D image slices (i.e., the slices are "parallel" to the vessel wall), called a
-stack. Our algorithm consists of the following main steps: Section 2.1 threshold determination; Section 2.2 voxel classification; Section 2.3 density-based clustering; Section 2.4 black voxel inclusion.
2.1. Threshold Determination
In our image setting, the voxel intensities often fluctuate throughout the slice sequence of a
-stack, probably due to the setup and chosen parameters of the imaging facility for particular experiments. That is, the intensities of voxels can vary up and down (even substantially) from slice to slice, and from
-stack to
-stack. Actually, the information for each voxel consists of three values (called channels), representing the levels of red, green, and blue (each in the range of 0 to 255) of the voxel. Thus, we need to determine a specific threshold value for each channel of every individual slice for an input
-stack (the threshold values of the three channels for different slices may be different).
Based on the outcomes of our preliminary experiments, we chose to apply Otsu's method [5] to compute the threshold values channel by channel and slice by slice. Assuming that the image to be thresholded contains two classes of pixels/voxels (e.g., object and background), Otsu's method computes the optimum threshold separating these two classes so that their combined spread (intraclass variance) is minimized. Although this method is efficient and works well for images with bimodal histograms, still it may not yield accurate segmentation results in our situation. Due to the scattering of many isolated red/green points, simple thresholding methods do not seem to be sufficient for identifying thrombi in our 2-photon microscopic images. We need to combine the thresholding method with the density-based clustering approach, as to be discussed in detail below.
2.2. Voxel Classification
In our image setting, since the information of any voxel consists of three channel values, representing its levels of red, green, and blue (each from 0 to 255), we need to classify each voxel as red, green, blue, or black (corresponding to the clot components of platelets, fibrin, plasma, and blood cells, respectively). Since the fluorescent signals in different channels of a voxel may not be independent of each other, there are many possible different combinations of channel values for a voxel. Thus, we need a method for voxel classification, based on the channel values of the voxels. Our classification method for each voxel
of every slice is as follows: Find the maximum value among the three channels of
(say, this value is red); if this red value is above the threshold of that slice for red, then
is classified as red; otherwise,
is black.
2.3. Density-Based Clustering
We apply Chen et al.'s density-based clustering (DBC) algorithm [12] to compute clusters of red/green voxels as well as ignoring isolated red/green voxels. Figure 2 illustrates the key concept of the DBC algorithm. The idea of density-based clustering is that, for two given parameters
(for the neighborhood) and
(for the density), if the 3D ball
of radius
centered at any red or green point contains at least (a mix of)
red/green points, then all the red/green points in the ball
are part of a cluster; further, if two clusters share any common red/green points, then they are merged into the same cluster.
As mentioned above, in the original images, there are many isolated red/green voxels (most of which are inactivated platelets and fibrin in the blood flow). Further, some platelets and fibrin may form relatively small or sparse clusters that are disconnected from the target clot and therefore should be ignored. One might consider applying filtering techniques (e.g., the median filter [18]) to remove such isolated data points and small clusters, since filtering techniques are often effective for removing noise in images. However, most filters have the undesired side-effects of changing the intensity values of certain voxels, blurring the boundary between different objects, or creating additional false positive points in the images. In our clot study, because we need to analyze the clot components quantitatively (both in the volume and on the surface), we prefer to keep the original voxel intensity values unchanged for the output precision of our quantitative analysis. The DBC approach can solve this kind of clustering problem without making any change to the image data. By using suitably chosen parameter values of the neighborhood
and density
, it allows us to identify large dense clusters (clots) and discard regions of low density (i.e., the background and isolated or small groups of inactivated platelet and fibrin voxels).
One important issue to the DBC approach is to choose appropriate values for the neighborhood parameter
and density parameter
. A heuristic algorithm for determining the parameter values of
and
was given in [19]. This general heuristic method, however, may not always produce effective parameter values for all different applications and situations. Expert input and decisions are often needed in determining the actual parameter values of
and
in specific applications, such as our particular case.
Based on our experiments and evaluations, we choose the ball radius
= 5 and the density value
= 80. The reason for using a "high" density value,
= 80, is as follows. After a cluster is produced by the DBC approach (in this step), we need to "expand" it (in the next step) by including the surrounding black voxels (to capture the nearby blood cells). The cluster expansion should not take blue voxels, but it should include nearby red/green voxels as well. Thus, this expansion process actually includes all surrounding non-blue voxels. With a relatively high density value, we preserve a dense cluster structure (although some "sparse" red/green voxels around the current cluster boundary may be excluded in the DBC process). This loss of information is compensated by allowing the clot to capture the nearby red/green/black voxels in the cluster expansion process.
The value of the ball radius
is determined as follows. For a given density parameter
= 80, if we set
= 5, then the threshold value for the density is about 15
(which means that at least 15
of the voxels inside the ball must belong to the point set of interest). The experimental results produced using these two parameters match well with the experts' manually segmented results. If we set the
value to (say) 4, then accordingly the threshold is raised to about 30
. But, our experimental results show that this fails to capture some of the nearby voxels which the biologists think should be included as part of the clot. Of course, we could use larger values for
and
; however, experimental results indicate that this does not make too much difference in the final results (i.e., the output clots). Yet, the larger values for
and
require considerably more computation. Therefore, the two parameter values we chose to use,
= 80 and
= 5, are suitable for our purpose. In different imaging settings, the users may estimate the percentage of the undesired points (the undesired points may be noise, or as in our application, scattered points of interest) and come up with other appropriate parameter values.
2.4. Black Voxel Inclusion
In the previous steps, we only look for voxel clusters of platelets and fibrin. Actually, there are also some blood cells which appear as black voxels surrounding the clot structure. These blood cells are also part of the clot and should be taken into account. The goal of this step is to include these nearby black voxels into the clot and compensate the loss of red/green voxels around the cluster boundary due to the DBC clustering. For every cluster voxel, we examine its neighboring voxels and decide whether these voxels should be added to the clot. Such a voxel
is added to the clot if and only if
is not yet part of the clot and is non-blue. Here we use the 6-connected neighborhood (in 3D) for clot expansion. The expansion process continues iteratively until all surrounding non-blue voxels are taken by the clot.