Betelgeuse in false colors, is this common? First, take the original Betelgeuse image from ALMA and remove red and green channels. Then boost the blue channel luminosity by x10 to x20 and a lot of detail pops out.

This is the resulting image that can be reproduced from the original.

If you zoom into the picture you'll notice tiny concentric "ripples". Blue shifted light denotes high energy particles (as opposed to red shift).

My hypothesis (I'm not an astonomer!) is that we are seeing background radiation, while the star itself obstructs the background. The ripples would then indicate gravitational bending as those heavy particles cross the super-extended corona of the star.

Is there an accepted hypothesis about these artifacts?

EDIT:

The inner ring of pixel-mess around the black spot is out of gamut and thus "invalid data". The ripples are inside the corona and, finally, the outer parts of the image are relatively uninfluenced background radiation from other objects. There are NO ARTIFACTS on the R and G channels.

This image shows what I mean by "ripples":


As a counter-argument to myself I show this more recent picture taken by SPHERE with similar artifacts. Maybe I should conclude that the high-level structure is real while the low-level structures are artifacts caused by the measuring instrument itself hitting its sensibility levels.



PS: I posted this question also on reddit.

EDIT: blue channel histogram

This is how to see the blue channel color information. I use Krita which is by no means a scientific tool but its immediate usage helps.

Download the image from the ESO source link above (it's the "Full size original" 91.6MB TIFF image).

Then, in Krita, go to "Filter > Adjust > Color Adjustment curves...". On the channel drop-down select "B" and observe the following picture:



I have highlighted with RED the interesting zone. On the background you'll notice there is a histogram and that color information is only present to the far left between the bars. All other intensities (maybe byte value 10 and above?) do not occur in the image.


  To the far right there is a barely visible population of "byte value 255 pixels", those are the out-of-gamut pixels.


To see those pixels drag the upper-right corner knob to the left so that the curve is steep from 0 to 255 between the two red bars I've shown. This will magnify intensity by a factor of 10 or 20 and map very dim pixels to brighter blue.



The uploaded image (second link above) is the resulting image of this process. There is NO EXACT SPOT I'm talking about. It is an aura all around the black blob in the middle.
This is a partial and perhaps temporary answer only, posted in order to get to the bottom of this. I think that the comments are correct, you're probably seeing an artifact of image manipulation and the original data is just a 2D intensity map.

I downloaded the original image at https://cdn.eso.org/images/screen/potw1726a.jpg, converted back to .png and analyzed in Python using  matplotlib and numpy. Right now I don't see these mysterious rings, but if you can provide pixel coordinates from the original image and explain more how you made the rings visible, that would be great!

Image breakdown into three color channels:



Line scans in x and y through center and maximum:



Same but multiplied by 256 (8 bits per channel) and plotted on a log scale:



Scatter plot of G and B versus R show that these are correlated. We're probably just looking at artificial coloring from a table, not different channels of data. It could be a similar thing going on here as well.



import numpy as np
import matplotlib.pyplot as plt

fname = 'Betelgeuse in false colors.png'

img = plt.imread(fname)
print(img.shape)

if True:
    plt.figure()
    plt.subplot(2, 2, 1)
    plt.imshow(img)
    plt.title('RGB')
    for i , char in enumerate('RGB'):
        plt.subplot(2, 2, i+2)
        plt.imshow(img[..., i], cmap='gray', vmin=0, vmax=1)
        plt.title(char + ' channel', fontsize=16)
    plt.show()

rgbx_cen = img[640]
rgbx_570 = img[570]

rgby_cen = img[:, 640]
rgby_570 = img[:, 520]

things = rgbx_cen, rgbx_570, rgby_cen, rgby_570
names  = 'rgbx_cen', 'rgbx_570', 'rgby_cen', 'rgby_570'

if True:
    plt.figure()
    for i, (thing, name) in enumerate(zip(things, names)):
        plt.subplot(2, 2, i+1)
        r, g, b = thing.T[:3]
        print(r.shape, g.shape, b.shape)
        plt.plot(r, '-r')
        plt.plot(g, '-g')
        plt.plot(b, '-b')
        plt.title(name, fontsize=16)
    plt.show()

if True:
    plt.figure()
    for i, (thing, name) in enumerate(zip(things, names)):
        plt.subplot(2, 2, i+1)
        r, g, b = thing.T[:3]
        print(r.shape, g.shape, b.shape)
        plt.plot(255*r, '-r')
        plt.plot(255*g, '-g')
        plt.plot(255*b, '-b')
        plt.yscale('log')
        plt.title(name, fontsize=16)
    plt.suptitle('scaled 0 to 255', fontsize=16)
    plt.show()

if True:
    r, g, b = [x.flatten() for x in np.moveaxis(img, 2, 0)[:3, ::8, ::8].copy()]
    plt.figure()
    plt.subplot(1, 2, 1)
    plt.plot(r, g)
    plt.title('green vs. red')
    plt.subplot(1, 2, 2)
    plt.plot(r, b)
    plt.title('blue vs. red')
    plt.show()