Post by asgr on Jul 26, 2017 12:50:21 GMT 8
We can use the pixel correlation function, in particular the FFT output, to assess how much further we can afford to push the source extraction in our image.
Have a go at running the following code. In each block we extract the standard VIKING Z-band test data, the only thing that changes is skycut. On each output we then run profitPixelCorrelation to extract the pixel-to-pixel sky correlation statistics for each image. We also get a FFT (actually the centred modulus of the 2D FFT) of the extracted image. If there are remaining sources then we should be able to extract a source out of the central portion of the FFT (have a think why this is true for yourself). When the skycut is close to 1, one the resulting extracted image is basically consistent with pure noise, suggesting we cannot push our nominal skycut (which is also influenced by the sigma smoothing scale, the ext, and pixcut). To do this rigorously you probably need to vary over all of skycut, sigma, ext and pixcut.
image=readFITS(system.file("extdata", 'VIKING/mystery_VIKING_Z.fits',package="ProFit”))
profound=profitProFound(image, skycut=2.0, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=1.5, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=1.0, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=0.8, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=0.6, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
By doing ProFoundsource detection on the FFT itself it tells us if there are significant sources of a certain common scale (usually small) still in the image to extract.
The levels above suggest we cannot push much further than a skycut=1.0. Clearly using skycut=0.6 introduces a lot of fake sources.
I will need to give this a bit more thought, but it seems assessing the image in this manner is a reasonable way to automate low-surface brightness source extraction.
Aaron
Have a go at running the following code. In each block we extract the standard VIKING Z-band test data, the only thing that changes is skycut. On each output we then run profitPixelCorrelation to extract the pixel-to-pixel sky correlation statistics for each image. We also get a FFT (actually the centred modulus of the 2D FFT) of the extracted image. If there are remaining sources then we should be able to extract a source out of the central portion of the FFT (have a think why this is true for yourself). When the skycut is close to 1, one the resulting extracted image is basically consistent with pure noise, suggesting we cannot push our nominal skycut (which is also influenced by the sigma smoothing scale, the ext, and pixcut). To do this rigorously you probably need to vary over all of skycut, sigma, ext and pixcut.
image=readFITS(system.file("extdata", 'VIKING/mystery_VIKING_Z.fits',package="ProFit”))
profound=profitProFound(image, skycut=2.0, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=1.5, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=1.0, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=0.8, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
profound=profitProFound(image, skycut=0.6, magzero=30, verbose=TRUE, plot=TRUE)
corout_objects_redo=profitPixelCorrelation(image$imDat, sky=profound$sky,
skyRMS=profound$skyRMS, objects=profound$objects_redo)
magimage(corout_objects_redo$image_sky)
profitProFound(corout_objects_redo$fft, verbose=TRUE, plot=TRUE)
By doing ProFoundsource detection on the FFT itself it tells us if there are significant sources of a certain common scale (usually small) still in the image to extract.
The levels above suggest we cannot push much further than a skycut=1.0. Clearly using skycut=0.6 introduces a lot of fake sources.
I will need to give this a bit more thought, but it seems assessing the image in this manner is a reasonable way to automate low-surface brightness source extraction.
Aaron