I have data which is distributed over two dimensional space and need to characterize the uniformity or lack of uniformity of that data over the space. Specifically, this is topographical data, that is, there is a height value associated with each point in the xy plane, such as is obtained in atomic force microscopy. I thought that several years ago I had found a statistical function in Igor to characterize the spatial uniformity of a data set, but cannot find the work in my records nor did my searching of the Igor manual, mail list or IgorExchange turn up anything.
I found information on Moran's I measure of spatial autocorrelation that looks promising. I will try coding this. I would appreciate hearing if there are other ideas or if anyone can point out something in Igor that I have overlooked.
Back in the 80's we were playing around with laser speckle trying to characterize surface roughness from the reflected speckle pattern. There is a wealth of literature on this subject; both the surface and the speckle pattern require some characterization. IIRC most computations involved FFT/2D correlations. There is another measure of uniformity that goes as exp(-1/sigma^2) where sigma is computed from the heights profile.
Some other possibilities to consider:
1. roughness as
Variable theMean=sum(imageWave) MatrixOP/O aa=abs(imageWave-theMean)// provide local measure MatrixOP/O bb=Sum(aa)/numPixels // get a single number
2. compute the variance.
3. Similar to (1) but using peak-to-valley heights.
4. Fractal analysis; here the fractal dimension is what you would usually want (there is also an associated length). Some day I'd actually like to see some IGOR code to compute these.
It seems that you are proposing measures for the average height or roughness of the surface... correct me if I have misinterpreted this. I can calculate this; what I am looking for is a measure of how uniform the roughness is over the entire image. For example, if the image consisted of discrete objects (say spheres) distributed on a flat background, how could I tell whether the objects were randomly located?
Thanks for the ideas; I will have to become familiar with MatrixOP.
what I am looking for is a measure of how uniform the roughness is over the entire image. For example, if the image consisted of discrete objects (say spheres) distributed on a flat background, how could I tell whether the objects were randomly located?
It was not clear to me from the OP if you wanted a single number or a local value. I think it helps to focus on a particular scenario, e.g., spheres distributed somehow in the image plane. In this case the problem reduces to a bunch of delta functions at the centers of the spheres so you can convert it into a counting problem. For example, suppose you subdivide your image into a rectangular grid of some density, count how many spheres you have per rectangle and compute the variance of these counts. It would be interesting to run some tests to figure out how the variance changes with the size of the grid. This would be related to the problem of choosing histogram bin size.
If some of your spheres tend to "cluster" I'd suggest approaching this by first running FPClustering and then computing a measure of uniformity from the results.
If you want to discuss any of this feel free to call me at our support number.
I will give your ideas a try and will probably give you a call sometime. I've been temporarily pulled away from this work but should get back to it soon..
My sphere example was over simplified, but it got the idea across. The actual data is topographic data (from an AFM), so instead of spheres, I'm looking to characterize the spatial distribution of height values.
Back in the 80's we were playing around with laser speckle trying to characterize surface roughness from the reflected speckle pattern. There is a wealth of literature on this subject; both the surface and the speckle pattern require some characterization. IIRC most computations involved FFT/2D correlations. There is another measure of uniformity that goes as exp(-1/sigma^2) where sigma is computed from the heights profile.
Some other possibilities to consider:
1. roughness as
MatrixOP/O aa=abs(imageWave-theMean) // provide local measure
MatrixOP/O bb=Sum(aa)/numPixels // get a single number
2. compute the variance.
3. Similar to (1) but using peak-to-valley heights.
4. Fractal analysis; here the fractal dimension is what you would usually want (there is also an associated length). Some day I'd actually like to see some IGOR code to compute these.
A.G.
WaveMetrics, Inc.
October 14, 2013 at 01:21 pm - Permalink
It seems that you are proposing measures for the average height or roughness of the surface... correct me if I have misinterpreted this. I can calculate this; what I am looking for is a measure of how uniform the roughness is over the entire image. For example, if the image consisted of discrete objects (say spheres) distributed on a flat background, how could I tell whether the objects were randomly located?
Thanks for the ideas; I will have to become familiar with MatrixOP.
Jeff
October 15, 2013 at 09:01 am - Permalink
It was not clear to me from the OP if you wanted a single number or a local value. I think it helps to focus on a particular scenario, e.g., spheres distributed somehow in the image plane. In this case the problem reduces to a bunch of delta functions at the centers of the spheres so you can convert it into a counting problem. For example, suppose you subdivide your image into a rectangular grid of some density, count how many spheres you have per rectangle and compute the variance of these counts. It would be interesting to run some tests to figure out how the variance changes with the size of the grid. This would be related to the problem of choosing histogram bin size.
If some of your spheres tend to "cluster" I'd suggest approaching this by first running FPClustering and then computing a measure of uniformity from the results.
If you want to discuss any of this feel free to call me at our support number.
A.G.
WaveMetrics, Inc.
October 15, 2013 at 09:59 am - Permalink
Thanks for your response.
I will give your ideas a try and will probably give you a call sometime. I've been temporarily pulled away from this work but should get back to it soon..
My sphere example was over simplified, but it got the idea across. The actual data is topographic data (from an AFM), so instead of spheres, I'm looking to characterize the spatial distribution of height values.
Jeff
October 23, 2013 at 05:36 am - Permalink