Geothermal facies from seismic
Here is a condensed video of the talk I gave at the SEG IQ Earth Forum in Colorado. Much like the tea-towel mock-ups I blogged about in July, this method illuminates physical features in seismic by exposing hidden signals and textures.
This approach is useful for photographs of rocks and core, for satellite photography, or any geophysical data set, when there is more information to be had than rectangular and isolated arrangements of pixel values.
Click to download slides with notes!Interpretation has become an empty word in geoscience. Like so many other buzzwords, instead of being descriptive and specific jargon, it seems that everyone has their own definition or (mis)use of the word. If interpretation is the art and process of making mindful leaps between unknowns in data, I say, let's quantify to the best of our ability the data we have. Your interpretation should be iteratable, it should be systematic, and it should be cast as an algorithm. It should be verifiable, it should be reproducible. In a word, scientific.
You can download a copy of the presentation with speaking notes, and access the clustering and texture codes on GitHub.




Evan Bianco
Reader Comments (9)
Excellent talk, Evan! It would be interesting to use AVO attributes and inversion results to see if there's a mechanical property difference between your seismic facies. This would also be helpful when calibrating to your wells, from which predetermined data clusters can be defined and imposed into the seismic data.
Thanks,
Antonio
@Antonio,
That is a fantastic idea. Unfortunately, the gathers look dismal, and we are really relying on the power of the stack for the imaging here. It might be useful to show a gather, because I had exactly the same curiosity. You'd be happy to know the same question was asked during the live presentation. I am glad to see that the same message is coming through.
But it's a great point. I would guess that a similar clustering would be attained whether one uses Near/Far offset stacks, Acoustic Impedance / Shear Impedance stacks, Intercept / Gradient stacks, etc. Folks who do inversion for a living would support the notion that impedance or 'elastic property' inversion would give better clustering than intercept and gradient. And it is for exactly this reason why I would love to quantify the improvement or deterioration within a classification scheme. Furthermore, I would expect an inferior classification if one doesn't use multiple attributes. Certainly some data sets will need more than three. Also, consider that pre-stack attributes all stem from "amplitude", whereas coherency, and energy, or spectral attributes, are different beasts entirely. What makes them distinct, I suppose, is aperture.
Good point about the wells. It would be interesting to see how these geothermal facies align with well bore measurements. One thing's for sure, standard high resolution (1-d) well logs are immune to these textural features. Certainly, we want to do more work in trying to make more physical sense for these facies. On the contrary it seems a bit reverse from folks who do AVO inversion; taking estimates of physical properties and then creating discrete petro-classes. We are stopping at classes and gazing over the chasm toward rock properties. The case for the diagenetic cap rock is sound, but the other facies are a bit slippery.
Great discussion. Thanks for the comment.
I enjoyed your article and thank you and Matt for sharing. Agile* is a VERY cool site!
You may have heard of the notion of using faces to represent data - as I vaguely recall, the idea was that as humans we quickly recognize differences in faces ( or even drawn faces ) and so if you can transform the aspects of your data into a face - then a quick look at the faces will tell the story. Needless to say - it didn't really catch on. Ah here's a link:
http://www.guardian.co.uk/education/2010/jan/26/smiley-face-statistical-analysis
So to add some spin to your work - you could also post faces on your facies classifications. Eyebrows could be gradients of the gathers? Headsize for amplitude? Ears could be frequency and phase spectra? Just adding this idea as a slightly cheeky ( sorry ) follow-on to your great work.
All Best
Hi Evan,
Great presentation.
Was going through your notes on the slides and I was wondering if you can elaborate on how you did this part.
K-means clustering
"Now if I simply assign a new color to each class so that it matches how I have drawn my cartoon. We can make a direct comparison."
Is the pattern recognition done using a neural network? (like the plugin on Opendtect)
Do you have to use data clustering as input to run pattern recognition or can you do it without.
I have never done a process like this before but your work is inspiring to give it a try, any tips or links, methods that can help someone do this.
Thanks,
Adam
@Terry,
I have never heard of using faces to represent data, The article was interesting, but my feelings align with the comment from "SimonB", who starts by saying "All very interesting but, if I may play the role of curmudgeon, of little practical use..."
I have seen some image classification work done on faces; the texture of hair is statistically different from the texture of skin, even though they may not necessarily be different hues. In fact, my Google Nexus 7 tablet is secured by a photograph of my face; it 'knows' it is me, and rejects the entry from any other intruder. There is also a live-ness check, "Blink now", to show that you are alive, and not a photograph, say). Fun stuff, and probably using some similar statistical techniques. Glad you enjoyed the video.
@Adam,
Is the pattern recognition done using a neural network?
No.
Let me try to satisfy your curiosity in two parts.
First, the K-means slide where I said, "now I simply assign a new color to each class,..." just means that the clusters aren't actually physical things until I do some subjective assignment to them. I suppose this is where the "geologic interpretation comes in". Consider the 2-D example of the cross-plot of 'attribute one' versus 'attribute two'. There is nothing inherently pink about the pink cluster that makes it pink, and there is nothing about the black color that makes it black. The colors are just flags or labels on the data points. Assignments into one of many classes. Same goes for the seismic example. With fuzzy c-mean clustering. Each data point gets assigned a probability of belonging to all classes. Then we assign it to the most-likely class. It's a powerful idea. We shouldn't be so rigid in our abstractions of data.
Second, I think this clustering approach is actually simpler than a neural network method. Here I am saying, "these three attributes give these 4 classes", but in neural networks, I don't think it is usually so clear. Also, I don't think this is pattern "recognition". Strictly speaking we are just computing numbers that correspond to the statistics of patterns. The pattern stuff is all done using Haralick statistics in a small window around each data point. And then we are using those numbers as new dimensions for clustering.
The code I posted on Git-Hub is actually two files. The clustering part, and the Haralick texture part. You can do clustering with or without textural attributes.
Does that make sense? The earlier posts on tea towels might make it clearer if you are still confused. It is probably not as mysterious, or as difficult as you think. And I like it that way.
Thanks for the response Evan.
That cleared it up, just was over complicating that step in my head. So the statistics applied to the cluster analysis assigns a spatial sample directly to a group. The 3D cluster plots helped me see it once you pointed it out.
Your right, simpler and clearer than a neural network.
Will give it a go, just need to get Matlab up and running first.
Great post, really interesting to see this stuff done outside of a 'point and click' piece of commercial software.
May I please have some clarification on the line in the readme file "If you save your seismic data as "Amplitude.txt", and load it into your local workspace, the texture classification code should work." - have you already loaded the segy (I assume) seismic file into the workspace using another matlab function, with amplitudes recorded in a maxtrix?
Stephen,
Sort of. Not really. But you are on the right track. I am not using a SEGY reader, but there are several available (I think) that might be useful to you). In an external program (OpendTect) I saved the data as columnar ascii, and saved that as Amplitude.txt, Similarity.txt, and so on. That is what I load into the workspace.
Admittedly due to a lack of rigour, the format of the data needed for this algorithm is simpler than SEGY. Currently this algorithm works only on a 2D matrix of concatenated tracess. As you have probably seen the algorithm does a reshaping for the clustering algorithm, and then reshapes back again into a form that can be loaded.
I haven't bothered to add a SEGY reader to this script. If you have any success with that let me know.
If you want to send me a subset of a line you are working on, I'd be happy to do a test. Good luck and keep me posted how it goes.