Before these images can be used in a more quantitative analysis, the size of each pixel must first be determined. To achieve this, the microscope comes with a small calibration plastic that looks like this:
As you can see, there are many options that can be chosen from. I highly suspect that the printing standards for this calibration unit are not particularly great, so I decided to choose the grid in the middle of the calibration plastic; I chose it because it provides many measurements of the scale at once, and it seems much easier for the manufacturer to get the spacing between printed lines right rather than the thickness of a line. I took seven images of this grid at slightly different positions. These images each look like this:
As you can see, the two values agree within the error bars, which is encouraging. Therefore I assumed that the scaling is the same in both directions, and combined them together to obtain a final image scale estimation:
As I mentioned before, an important step is to re-normalize the image contrast in order to see the pores clearly regardless of filter thickness. In astronomy, I need to do this all the time and by experience one efficient way to do it that is robust against outlier pixels is to subtract the 0.5th percentile of the image everywhere (i.e., subtract almost the smallest image value), then divide the image by its 88th percentile (i.e., divide by almost the largest image value). I then set any outlier pixels darker than zero to exactly zero, and any outlier pixels brighter than 1.0 to exactly 1.0.
There is another neat trick that can be used to remove large-scale variations across the image very efficiently, as long as they are larger in scale than the largest possible pores. Basically, you divide the original image by a smoothed version of itself, and this brings out only the small-scale variations across the image. I used a Butterworth filter to do this; it uses a slightly different bandpass to smooth the image compared to the more typical Gaussian smoothing, but I found that it was better at preserving the exact pore shapes. In all cases I removed only the 10% largest spatial frequencies in all images with this step.
Another step I took is to blow out the image resolution by a factor 20 using an interpolation algorithm. This allows me to measure pore sizes at the sub-pixel level, and obtain smoother pore size distributions with more data points in them. The next step to detect filter pores is to choose a threshold to separate a pore from the filter surface. I used a threshold of 0.5, which means that any pixel darker than half of the image scaling is considered a pore. You can see visually what this results in, with all detected pores marked in red:
I found this algorithm efficient to quickly measure pore sizes regardless of their shapes across the image, and measuring m(x) is basically asking If you take one squared particle of radius x, what is the fraction of surface positions where it could pass through a filter pore ?
As you can see, the peak of the distribution in terms of number of pores seems located below the spatial resolution of the microscope, but we will see later that this is not an issue given that we are interested in how the pore distribution affects flow rate, and we will see that the pores smaller than 10 micron have an insignificant contribution to flow for all the filters that I tested.
To overcome this problem, I gently closed the Caliper on each filter to obtain a more realistic thickness, but this brings up a whole new problem of measurement reliability. Fortunately, I can easily repeat these measurements many times on different filter locations, and different filters, so I kept taking measurements until my error on the average thickness became much smaller than the quoted 20 micron precision of the Caliper. Stats geeks will know that this error on the average can be calculated with the standard deviation of all values divided by the square root of the number of values.
Another important point about filter properties is how fast water flows through them on average. This is affected by factors like pore size distribution, filter thickness, but also their rigidity and how well they stick to the surface of a V60, because a better sticking filter will slow down the upward escape of air and therefore slow down flow. Because flow rate is a function of many complex and intertwined factors, I also measured them with a simple experiment further down.
We can however make a prediction of flow rate, based on an idealized planar filter with a uniform thickness and circular holes. The theory behind it is given in some details here, but basically the only part you need is this one:
The detailed data are available here. Keep in mind that flow can be affected by water viscosity, your grind size, filter clogging, etc.; so these values are most interesting when compared to each other in a relative sense. The error bars are mostly due to my ability to start and stop the timer at the right time; my standard deviation on timings across all filters was 0.2 seconds, and apparently the average human reflex delay is 0.25 seconds, so it seems credible that the reflex inconsistency be of that same order of magnitude.
Another often discussed factor about coffee filters is how they might directly affect the taste of a coffee beverage by contributing chemical compounds to the coffee beverage. This is what can produce this undesirable papery or cardboard taste, and is often the quoted reason for why pour over filters need to be rinsed before brewing. To be sure, there are other reasons to do it; pre-heating the brewing vessel and making sure the filter is well positioned in it are also important reasons why we pre-rinse pour over filters.
I once did a preliminary experiment where I pre-rinsed Hario tabless and tabbed filters (both are bleached) and then immersed them in hot water for a few minutes, and tasted the water. I was not able to confidently say that I could taste anything different from just the tap water, so I concluded that I could use either of them without worrying about taste, at least if I pre-rinsed them.
To answer these questions, I carried a different experiment that resembles two of the filter rinsing techniques that I used, applied to the Hario unbleached filters as a worst case scenario. The goal of these experiments was to see whether I can detect any additional dissolved solids imparted by the filter.
This indicates that tap water removed most of the filter materials, but switching to hot water allowed to extract a tiny bit more, although I would be skeptical that 1 ppm of filter materials could be humanly tasted. It also seems that the filter was able to retain a total of 4.8 g water and contribute 0.481 mg of paper material.
I defined the uniformity index (UI) simply as the inverse of the standard deviation of unit-less idealized flow across filter regions; this way, a higher UI corresponds to a more uniform filter. I did not assign any physical units to this index because it would require specifying the water viscosity, pressure drop across the coffee bed, etc. Hence, this index is only useful as a relative measure between filters, and it could not be compared with those calculated from any other pore detection algorithm or microscope. Here are the UI I calculated for all filters under consideration:
The error bars above are based on small number statistics. Remember that a higher UI is good; it means the filter will flow more uniformly across its surface. Notice how the unbleached filters come out at the top again !
As I already mentioned, I suspect that filters with a higher UI may produce a more uniform extraction, maybe even more so if you use small doses in your pour overs. However, what I do not know is the observable importance of this effect; the effect could be too small to matter in practice. This however opens up interesting practical experiments; for example, it seems possible that the Hario unbleached paper filters may allow us to reach more even extractions, and that would result in a higher average extraction yield when everything else is kept fixed.
A typical problem that one can encounter when brewing coffee is a sudden decrease in flow rate caused by very fine coffee particles clogging the pores of a filter. For this reason, the values of flow rate that I measured above must be taken with a grain of salt: if a filter flows very fast because it has very large pores, coffee fines might be able to clog them, and as a result the filter flow rate might decrease heavily during a brew, and depend strongly on your brew method (e.g. the volume of your bloom phase, whether you stir the slurry or not, etc.). If the filter flows fast because it is thin, the decrease in flow rate might be less important, and less sensitive to your technique.
Not everyone seem to prefer grinders that produce the lowest possible amount of fines (so far, it seems to be my preference), but whatever your preference is, you should always try to avoid filter clogging. A filter will typically not clog in a uniform and immediate way, and that means you will get channeling as water starts to follow some preferential paths along the un-clogged filter pores. As you might already know, channelling will over-extract coffee along the channel paths, and cause astringency (a dry feeling in the mouth) in the resulting brew. Therefore, if you use a grinder that produces more fines, you should consider using filters that have smaller clogging indices. On the other hand, if you use a grinder that produces very little fines, this might be less important.
Paper filters are much more interesting to me, as their smaller pores allow to prevent coffee fines from passing into the beverage. The coffee bed does a lot of the job at retaining coffee fines, but if the filter had larger pores, some of them (either those already at the bottom or those that migrated down) would still pass through.
One big take away point that I got from this analysis is that bleaching seems to deteriorate the quality of pore distributions. This is true in terms of the general spread in pore sizes, but even also in how much the flow of water varies across the surface of the filter.
7fc3f7cf58