You’ve reached the blog of Sébastien Brisard (follow the About me link to read my CV). My most recent posts are listed below. A full list of posts can be found in the Archives page. These posts frequently refer to work published by myself or others; the full bibliographic references are provided in the References page.
While you’re at it, you can also visit my other pages
- https://sbrisard.github.io/janus: the documentation of the
- https://sbrisard.github.io/pw85: the documentation of the
2018-03-26 – On the periodic-plus-smooth decomposition of an image, part 7: improved implementation of Moisan’s algorithm
In the previous instalment of this series, we implemented Moisan’s (2011) efficient algorithm to compute the periodic-plus-smooth decomposition of an image. This algorithm relies heavily on the discrete Fourier transform, and already improves quite a lot over our previous conjugate gradient-based implementation. In the present post, we will show that performance of the implementation can be slightly improved with very little effort.
2018-03-19 – On the periodic-plus-smooth decomposition of an image, part 6: minimizing the energy, the clever way
In the previous instalment of this series, we computed Moisan’s (2011) periodic-plus-smooth decomposition of an image by means of the conjugate gradient method. This worked like a charm, but was fairly inefficient, owing to the iterative nature of the method. Moisan actually showed that the whole decomposition could be computed explicitly in Fourier space.
2018-03-12 – On the periodic-plus-smooth decomposition of an image, part 5: minimizing the energy, the clumsy way
In this post, we will compute Moisan’s (2011) periodic-plus-smooth decomposition of an image by direct minimization of the energy introduced in the second instalment of this series. More precisely, u being a m×n image, we will minimize the function F(v, u) over the space of m×n images v. The minimizer, s, is the smooth component of u, while its complement p=u-s is the periodic component of u.
2018-03-05 – On the periodic-plus-smooth decomposition of an image, part 4: implementing the linear operators
In the previous instalment of this series, we introduced the linear operators Q₁ and Q that allow to define Moisan’s (2011) periodic-plus-smooth decomposition. In theory, the linear operators Q₁ and Q are matrices. However, for m×n images, these matrices would be unnecessarily large: mn×mn! We will therefore adopt here a matrix-free approach for the Python implementation of these operators.
2018-02-26 – On the periodic-plus-smooth decomposition of an image, part 3: the energy as a quadratic form
In the previous instalment of this series, we introduced the periodic-plus-smooth decomposition of an image as a pair of images which minimizes an energy functional. Observing that this energy is a quadratic form, the purpose of this post is to derive closed form expressions of the underlying linear operators. These expressions will then be combined in the next instalments to a conjugate gradient algorithm in order to minimize the energy of the periodic-plus-smooth decomposition.
2018-02-19 – On the periodic-plus-smooth decomposition of an image, part 2: defining the decomposition
In the previous instalment of this series, we discussed the need for periodic images. Although not all images are periodic, some image analysis techniques are best performed in Fourier space (using the fast Fourier transform). Applying Fourier-based techniques to images that are not periodic (as is often the case) generates artifacts. In order to reduce these artifacts, Moisan (2011) proposed to construct a periodic image that is as close as possible to the original image. For reasons that will become clearer in the remainder of this post, he called the resulting construction the “periodic-plus-smooth decomposition”.
In this new series, we will explore the so-called periodic-plus-smooth decomposition of an image, introduced by Moisan in 2011. This series is largely based on Moisan’s paper, called Periodic plus Smooth Image Decomposition (the author’s version can be found on HAL). Besides introducing a quite smart technique (that I do use for real materials science applications), this series will be an opportunity to discuss an important topic: how to test the implementation of an algorithm, and be confident that the test actually validates the implementation.
I recently had the pleasure to give a talk on “Variational estimates of the poroelastic coefficients” at the 6th Biot Conference on Poromechanics that took place at École des Ponts ParisTech on July 9-13, 2017. This is joint work with my colleague Siavash GHABEZLOO. It has been ongoing for years now, but for lack of time, the full paper is still not out! (To tell the truth, I need to find and correct a mistake in the illustrative application…).
I am currently preparing with two other colleagues a review paper on X-ray tomography of cementitious materials, for which I need to retrieve tabulated values of the X-ray mass attenuation coefficients of all elements. NIST provides such data (see X-Ray Mass Attenuation Coefficients by J. H. Hubbell and S. M. Seltzer). However, it does not come in the form of simple files that can be downloaded. Rather, the values are presented in nicely formatted HTML tables (see here for an example).
In this post, I set out to extract this data as a HDF5 table. Of course, this looks like a job for Scrapy!
My student Mohamed Hassan Khalili has recently had one of his papers published in Physical Review E. The paper is called “A numerical study of one-dimensional compression of granular materials”. I have only been very marginally involved in this DEM study, which is divided in two parts.
Our paper “Discrete Digital Projections Correlation: a reconstruction-free method to quantify local kinematics in granular media by X-ray tomography” has recently been published in Experimental Mechanics.
My paper “Towards improved Hashin–Shtrikman bounds on the effective moduli of random composites” has recently been published in Mechanics & Industry.
In the previous instalment of this series, we have analyzed the morphology of the rice grains. In particular, we have defined their orientation as that of the major axis of inertia. We are now in a position to quantify the statistics of the orientations. We will first discuss one-point statistics (each grain is considered individually), then two-point statistics (mutual orientations of pairs of grains are considered). Finally, we will try to quantify how the wall of the sample container influences the orientation of the rice grains.
My paper “Reconstructing displacements from the solution to the periodic Lippmann–Schwinger equation discretized on a uniform grid” has recently been published in International Journal of Numerical Methods in Engineering.
2016-02-19 – Orientation correlations among rice grains, part 7: analysis of the shape of the grains
In the previous instalment of this series, we have segmented the 3D image of the assembly of rice grains. In other words, each voxel of the image is attributed the label of the grain to which it belongs. Remember the initial goal of this series: we want to quantify orientation correlations between grains. To do so, we must analyse the orientation of each individual grain. This is the topic of the present post.
My student Vinh Phuc Tran has recently had one of his paper published in Mechanics of Materials. The paper is called Stochastic modeling of mesoscopic elasticity random field.
In the previous instalment of this series, I showed that a convincing binary image could be produced from the gray level 3D reconstruction of the assembly of rice grains, using Otsu’s threshold. However, I intend to carry out statistical analyses of the grains themselves in the subsequent instalments. Therefore, instead of a binary image of the rice grains, what is really needed is a labelled image, where all voxels which are thought to belong to the same rice grain are tagged with the same label. This is called segmentation, which is the topic of the present post. I will first show that the most basic segmentation technique (namely, detecting connected components in the image) fails in the present case. This calls for a more elaborate strategy, based on the widely popular watershed method. However, blind application of the standard watershed strategy leads to over-segmentation. This post will therefore close on a problem-dependent strategy better suited to the present case.
In the previous instalment of this series, we used the circle Hough transform to find the boundary of the sample and define the circular ROI. Within this ROI, we now need to segment the rice grains. In other words, starting from a gray-level image (Fig. 1, left), we want to produce a binary image, where all pixels that we believe belong to rice grains are white, and all background pixels are black (Fig. 1, right). This is the topic of the present post, where we will use Otsu’s automated threshold selection. I will first discuss Otsu’s method, and propose what I believe is a new interpretation of this rather old technique. Then, I will apply this method to the 3D image of rice grains, using scikit-image.
Finding the stress resultant and stress couple in a spherical pressure vessel seems easy enough. Well, this apparently simple problem allows us to highlight subtle thickness effects within shells. It should be emphasized again that these thickness effects have nothing to do with shear corrections. Indeed, shear stresses are null at any point of the spherical pressure vessel. Rather, the thickness effects we are discussing in this series are due to curvature.
In the first instalment of this series, I showed that using Koiter’s thin shell solution leads to a non-null stress couple, which came as quite a surprise. In the second instalment, I used the exact, 3D solution to derive reference values of the stress couple and stress resultant through integration over the thickness of the shell. In particular, I showed that thickness corrections had to be incorporated.
This still does not settle the matter, since the results obtained within the framework of Koiter’s thin shell theory (see first instalment) are inconsistent with the reference, 3D elasticity values (see second instalment). To reconcile both approaches (3D elasticity vs. shell theory), we need to use a thick shell theory, as illustrated below.
In the previous instalment of this series, we analysed a spherical pressure vessel by means of Koiter’s linear theory of thin shells. We found the somewhat unexpected result that the stress couple was not null. Besides, we also found that the stress resultant was slightly different from the well-known value N=pR/2. So what was wrong with the previous analysis? To explore this question, we will make use of the exact solution in 3D elasticity.
As indicated at the bottom of each page of this website, this blog is now licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. This means that you are free to share and/or adapt the contents of this blog, as long as you give appropriate credit to the author. You may not make profit out of this website, though.
In structural analysis, thick beams (resp. plates) usually refer to shear deformability, and the Timoshenko beam theory (resp. Mindlin–Reissner plate theory). With curved elements however (e.g. curved beams or shells), the situation is more subtle, as thickness corrections may be necessary even in shells where the shear stress is null at any point. In this series, this is illustrated with a spherical pressure vessel, for which the stress resultants and couples are studied. “Easy enough”, you probably think: N=pR/2, M=0 and that’s the end of it (Wikipedia). Well, maybe…
In the previous instalment of this series, we obtained binned slices of the sample. Fig. 1 is a typical example of these binned slices. We now want to segment the rice grains. However, the analysis (in particular, Otsu thresholding) might be perturbed by the fact that the walls of the sample container are visible on the 3D image. In this post, I will show how we can locate these walls. Then, any subsequent analysis will be performed within the Region Of Interest (ROI) thus defined.
The full reconstructed image resulting from the tomography experiment described in the second instalment of this series is a 1747×1751×688 stack. The voxel size is about 0.030 mm. This is far too much for the purpose of the present study, since all we are interested in is the determination of the location (coordinates of the centroid) and orientation (principal axes of inertia) of the rice grains. In order to reduce the computation time, the images will first be binned, that is each set of (say) 4×4×4 voxels will be replaced with a unique voxel, with average gray value. 3D binning would usually require three uggly nested loops. There is, however, a much more pythonic way. This is the topic of the present post.
In the first instalment of this series, I briefly introduced orientational order in assemblies of anisotropic particles, and proposed an illustration based on synthetic microstructures. But what I really intend to do in this series is to show how orientational order can be quantified in a “real-life” sample, namely a packing of rice grains. This of course requires a 3D image of the packing. Fortunately, my lab (Laboratoire Navier) is the proud host of a collaborative microtomography platform and my former colleague Nicolas Lenoir –who was in charge of this instrument– gave me the opportunity to scan my toy sample in december 2013.
In this series, I will explore the notion of orientational order in random packings of anisotropic (flat or elongated), hard particles. By orientational order, I mean that particles which are close to each other tend to adopt the same orientation. This leads to strong local anisotropy, while the packing may well be globally isotropic; in particular, all orientations of single grains are equiprobable. Local orientational order is stronger when the volume fraction of particles, or their aspect ratio increases.
My blog was previously hosted by Blogger. I have now moved to GitHub Pages, and a statically generated blog. This new website is entirely generated with Emacs’ Org mode (the source files of my blog can be found here; see in particular the config file). The stylesheet is inspired by the Hello Worg website, the simplicity of which I like. It is a rather exciting experience for me to build a whole website “from scratch”. Of course, there are many things I need to learn, and this blog should hopefully improve with time… be patient! Meanwhile, have a look to my previous posts which I have ported to this site. Happy reading!
The Green operator for strains is defined as the linear operator which maps –in a homogeneous material– the local prestress to the (opposite of the) local strain. Closed-form expressions of this operator can be derived in the case of periodic boundary conditions, as will be demonstrated in the present post.
In a previous post, I introduced the fourth-rank spherical and deviatoric projection tensors. Any isotropic fourth-rank tensor is a linear combination of these two tensors; in other words, the space of isotropic fourth-rank tensors (with minor and major symmetries) is of dimension 2. Similarly, it can be shown (Walpole, 1984) that the space of three-dimensional, transverse isotropic fourth-rank tensors (with minor and major symmetries) is of dimension 6. Furthermore; it is possible to produce a convenient basis of this space. This is the topic of the present post, which is mostly based on the paper by Walpole (1984).
The double dot product of two tensors is the contraction of these tensors with respect to the last two indices of the first one, and the first two indices of the second one. Whether or not this contraction is performed on the closest indices is a matter of convention. In this post, I will show that this choice has some important implications.
In this post, I will introduce the acoustic tensor of linearly elastic materials. Closed-form expressions of the inverse of this tensor can be derived in the case of isotropic materials. This will later come in handy to derive closed-form expressions of the periodic Green operator for strains.