December 19th, 2012
“How did this get published?” is a question I regularly ask myself when reading new papers coming out. I just came a across another one of these jewels, and because the topic is that of a previous blog post here, I thought I’d share my frustration with you.
Read the rest of this entry »
Tags: bad science, dither, error diffusion.
Posted in rants | 1 Comment »
September 1st, 2012
Most of the new papers that I come across that propose a new or improved way of filtering out noise from images use the Peak Signal-to-Noise Ratio (PSNR) as a means to evaluate their results. It has been shown again and again that this is not a good way of evaluating the performance of a filter. When people compute the PSNR for a filtered image, what they actually do is compare this filtered image to an undistorted one (i.e. known ground truth). This is very different from what the name PSNR implies: the ratio of peak signal power to noise power. Of course, that is something that cannot be measured: if we’d be able to separate the noise from the signal and measure the power of the two components, then we wouldn’t need to write so many papers about filters that remove noise! So instead, the typical PSNR measure in image analysis uses the difference between the filtered image and the original (supposedly noise-free) image, calls this difference the noise, and computes its power (in dB):
Read the rest of this entry »
Tags: bad science, comparison, evaluation, filter, MSE, noise, PSNR, SSIM.
Posted in tutorials | 7 Comments »
June 30th, 2012
We are going to be organizing the 11th conference in a series dedicated to Mathematical Morphology. This is the main conference in the field, and many of the ideas within Mathematical Morphology were first presented there. I can’t count the number of times the proceedings for this series is mentioned in the reference list of my papers! The first call for papers just went out, I’m copying it here for anyone interested. For more information, visit the ISMM 2013 website.
Read the rest of this entry »
Tags: conference, mathematical morphology.
Posted in announcements | No Comments »
February 13th, 2012
Some time ago I wrote about how to compute the Feret diameters of a 2D object based on the chain code of its boundary. The diameters we computed were the longest and shortest projections of the object. The shortest projection, or smallest Feret diameter, is equivalent to the size measured when physically passing objects through sieves (i.e. sieve analysis, as is often done, e.g., with rocks). The longest projection, or largest Feret diameter, is useful as an estimate of the length of elongated objects.
The algorithm I described then simply rotated the object in two-degree intervals, and computed the projection length at each orientation. The problem with this algorithm is that the width estimated for very elongated objects is not very accurate: the orientation that produces the shortest projection could be up to 1 degree away from the optimal orientation, meaning that the estimated width is length⋅sin(π/180) too large. This doesn’t sound like much, but if the aspect ratio is 100, meaning the length is 100 times the width, we can overestimate the width by up to 175%!
Read the rest of this entry »
Tags: area, boundary, chain code, convex hull, Feret, length, measure, object, polygon, width.
Posted in algorithms | No Comments »
January 12th, 2012
I’m pleased to announce that a new version of DIPimage has been released. There’s some performance improvements, some bug fixes, and some new functions. The measure function has some new features also, that use the convex hull of the objects. The Feret measure is computed differently now, also using the convex hull. This makes this computation more accurate and also somewhat faster.
But most importantly, we have rewritten a lot of the code that does binary arithmetic and logic operators. Binary here means these operators take two inputs. +, -, *, &, > and == are examples of binary operators. All of these used to be computed using MATLAB code, which required some nifty tricks. For example, computations between images of different type (i.e. an 8-bit integer image added to an 16-bit integer image) used to require data conversion because MATLAB cannot perform such a computation. All of these binary operators are now computed by DIPlib instead. This makes some cases much more efficient. We parallelized the arithmetic and logic code in DIPlib for further speed improvements.
Read the rest of this entry »
Tags: bsxfun, DIPimage, singleton dimension, singleton expansion.
Posted in announcements | 2 Comments »