# How to remove 'silk braid' noise in satellite data?

Satellite remote sensing data is a powerful tool for researching the spatial distribution and temporal variation of atmospheric species.

Aura is one satellite owing to NASA which meaning atmosphere in Latin literally.

OMI which means Ozone Monitoring Instrument has the global observation data for $\ce{O3}$, $\ce{NO2}$, $\ce{BrO}$ etc.

Getting the $\ce{NO2}$ monthly mean data from TEMIS, the ESRI grid format file was plotted by me showing here:

I have noticed that the figure are covered by discrete silk braid (in my plot, they are plotted in green color liking raining top->down) like this:

IMHO, these braid must be not related to the anthropogenic emission but something related to the satellite orbit.

For quantify research of certain grid box, these braid would influence the finite column concentration.

Besides, from NASA Giovanni online visualization tools, the figure below is also the $\ce{NO2}$ tropospheric column in the same area.

There are no silk braid like my figure.

So, my question is here: How to remove these abnormal value for more precise data.

That would be nice if anyone familiar with this area give me some advice.

### Update

Thanks for @deneil's attention. I presented two data source here for distinguishing.

1. TEMIS data was called Dutch OMI NO2 (DOMINO) data product v2.0.
In its official manual here, it said, I quoted:

• DOMINO = Level 2 product
The DOMINO data contains geolocated column integrated $\ce{NO2}$ concentrations, or
$\ce{NO2}$ columns (in units of molecules/cm2). DOMINO data constitute a pure Level 2 product, i.e.
• it provides geophysical information for each and every ground pixel observed by the instrument, without the additional binning, averaging or gridding typically applied for Level 3 data.
2. The Giovanni visualization tool use OMI/Aura $\ce{NO2}$ Cloud-Screened Total and Tropospheric Column Daily L3 Global 0.25deg Lat/Lon Grid which means it's level 3 data.

I think the difference sitting there. But I have also tried OMI $\ce{NO2}$ level2 data from NASA (OMI has two independent data source in Dutch and NASA), it has 15 candidate scenes which was plotted different from the TEMIS DUMNO2 data.

Here is an example. The figure below plot the level 2 data in tilted grid due to the satellite orbits. Level 3 data must resample the tilted grid data into regular grid network. So, I think my first figure shows the right result as level 2 data's character.

### Updated II

There are three different source for tropospheric $\ce{NO2}$ column. It seems that Berkely's dataset is the best choice.

• Both Plots are based on exactly the same data? Or might it be that the NAS Giovanni Plot is based on further processed data? – daniel.heydebreck Jun 17 '16 at 11:19
• Sorry for replying late. I check the both datasource which are Dutch OMI NO2 (DOMINO) data product v2.0 and GES_DISC_OMNO2d_V003(Tropospheric Column Daily L3 Global 0.25deg Lat/Lon Grid) – Han Zhengzu Jun 17 '16 at 15:33

You ask, How to remove these abnormal value for more precise data?

The short answer is that you might be able to make your data look more representative of the natural 'truth', but you will probably have to pay for this with some precision. The problem is that the measurement itself is imperfect: this looks like an artifact of the data collection method. The general name for unwanted energy that interferes with a signal you are interested in is noise.

In your case, there is some random noise, and there is this coherent (i.e. spatially organized) noise. It is likely impossible to substantially attack either type of noise without touching the signal. In other words, you will probably have to pay for the noise reduction with some loss of precision. This may be a trade-off you are willing to make.

### Reducing noise

There are many, many ways to reduce noise in data. A very common way to reduce random noise is to apply a smoothing filter such as a simple mean in some small, moving window (often expressed as a convolution operation). The problem with this is that it just mixes the noise into the image.

You can also think of a smoothing high-cut filter in the spatial frequency (aka wavenumber) domain. A common approach to removing the sort of spatially organized noise you have is to use a 'notch' (narrow) cut filter in this domain, which has the effect of removing noise with that spatial frequency. In other words, you can remove stripes.

Filters that remove stripes can be found in various image processing software, or could be implemented with various scientific computing languages (e.g. MATLAB's Image Processing Toolbox or scikit-image for Python). Here are some options:

Thanks for @Kwinkunks's answer. I have read this paper. And this figure may explain something important.

What I have already done is plotting the original data like the first subplot.
From Destriped - v1.02, the noise data can be shown clearly.

Adding another figure to indicate the big importance of induced noise.

Huge difference there!

So, I'll learn some technology to deal with the destriped problem. I'm familiar with Python. Anyone who has similar project experience could post your method here.