Оценка фона (photutils.background) — photutils 1.8.0

Введение

Для точного измерения фотометрических и морфологических свойств астрономических источников, требуется точная оценка фон, который может быть как от неба, так и от детектора. Сходным образом, наличие точной оценки фонового шума важно для определение значимости обнаружения источника и для оценки фотометрические ошибки.

К сожалению, точная оценка фона и фонового шума сложная задача. Кроме того, поскольку астрономические изображения могут охватывать широкий разнообразие сцен, нет единого метода оценки фона это всегда будет применимо. Photutils предоставляет инструменты для оценки фон и фоновый шум в ваших данных, но они, скорее всего, требуется некоторая настройка для оптимизации фоновой оценки ваших данных.

Скалярная оценка фона и шума

Простая статистика

Если уровень фона и шума относительно постоянны в изображения, самый простой способ оценить эти значения — вывести скаляр величины с помощью простых приближений. При вычислении изображения статистике необходимо учитывать астрономические источники, присутствующие на изображениях, которые добавляют положительный хвост к распределению пикселей интенсивности. Например, можно рассмотреть возможность использования медианы изображения как уровень фона и стандартное отклонение изображения как 1-сигма фоновый шум, но результирующие значения смещены из-за присутствия реальные источники.

Несколько лучший метод включает использование статистики, которая устойчивы к наличию выбросов, таких как biweight расположение для уровня фона и biweight масштаб или нормализованное среднее абсолютное отклонение (MAD) для оценка фонового шума. Однако для большинства астрономических сцен эти методы также будут искажены наличием астрономических источников в Изображение.

В качестве примера мы загружаем синтетическое изображение, состоящее из 100 источников с фон с распределением по Гауссу, среднее значение которого равно 5 и является стандартным отклонение 2:

 >>> из photutils. datasets импортировать make_100gaussians_image
>>> данные = make_100gaussians_image()
 

Построим изображение:

 >>> импортировать matplotlib.pyplot как plt
>>> из astropy.visualization импортировать SqrtStretch
>>> из astropy.visualization.mpl_normalize импортировать ImageNormalize
>>> норма = ImageNormalize(stretch=SqrtStretch())
>
>> plt.imshow(данные, норма=норма, происхождение='ниже', cmap='Greys_r', ... интерполяция = 'ближайший')

( Исходный код , png , нанимает.png , pdf , svg )

И медиана изображения, и местоположение бивеса больше истинного уровень фона 5:

 >>> импортировать numpy как np
>>> из astropy.stats импортировать biweight_location
>>> печать (np.median (данные))
5.225529518399048
>>> print(biweight_location(данные))
5.186759755495727
 

Аналогичным образом, используя среднее абсолютное отклонение для оценки Уровень фонового шума дает значение, превышающее истинное значение 2:

 >>> из astropy. stats импортировать mad_std
>>> print(mad_std(данные))
2.1443760096598914
 

Источники клиппинга Sigma

Наиболее широко используемый метод удаления источников с изображения. статистика называется сигма-отсечением. Вкратце, пиксели, находящиеся выше или ниже указанного уровня сигмы от медианы отбрасываются, а статистика пересчитывается. Процедура обычно повторяется через количество итераций или до тех пор, пока не будет достигнута сходимость. Этот метод обеспечивает лучшую оценку фона и фонового шума уровни:

 >>> из astropy.stats импортировать sigma_clipped_stats
>
>> среднее значение, медиана, стандартное значение = sigma_clipped_stats (данные, sigma = 3,0) >>> print((среднее, медиана, станд.)) (5.199138651621793, 5.155587433358291, 2.094275212132969)

Маскировка источников

Еще лучше исключить источники из изображения с помощью маскируя их. Этот метод требует определения источников в данных, которые, в свою очередь, зависят от фона и фоновый шум. Поэтому данный метод оценки фон и фон RMS требуют итеративной процедуры.

Одним из способов создания маски источника является использование изображение сегментации. Здесь мы используем

detect_threshold удобная функция для получения грубая оценка порога при уровне фонового шума 2 сигма. Затем мы используем функцию detect_sources для создать SegmentationImage . Наконец, мы используем make_source_mask() метод с круговым расширением для создания исходной маски:

 >>> из astropy.stats импортировать sigma_clipped_stats, SigmaClip
>>> из photutils.segmentation импортаDetect_threshold,Detect_Sources
>>> из photutils.utils импортировать round_footprint
>>> sigma_clip = SigmaClip(sigma=3.0, maxiters=10)
>>> порог = обнаружение_порога(данные, nsigma=2.0, sigma_clip=sigma_clip)
>>> segment_img = detect_sources (данные, порог, npixels = 10)
>
>> след = круговой_след (радиус = 10) >>> маска = segment_img.make_source_mask (отпечаток = след) >>> среднее значение, медиана, стандартное значение = sigma_clipped_stats (данные, sigma = 3,0, маска = маска) >>> print((среднее, медиана, станд. )) (4,994042038715669, 4,991333562774164, 1,9699473426119296)

Процедуру обнаружения и маскирования источника можно повторять дальше. Даже с одной итерацией мы находимся в пределах 0,2% от истинного значения фона и 1,5% истинного среднеквадратичного значения фона.

Двухмерный фон и оценка шума

Если фон или фоновый шум различаются по изображению, тогда вы, как правило, захотите создать 2D-изображение фона и фоновое среднеквадратичное значение (или вычислить эти значения локально). Это может быть достигается путем применения вышеуказанных методов к субрегионам изображение. Обычная процедура заключается в использовании сигма-усеченной статистики в каждом сетка сетки, которая покрывает входные данные для создания изображения с низким разрешением изображение на заднем плане. Окончательный фон или фоновое RMS-изображение можно затем быть сгенерированы путем интерполяции изображения с низким разрешением.

Photutils предоставляет Background2D класса для оценки 2D-фона и фонового шума в астрономический образ.

Фон 2D требуется размер блока ( box_size ), в котором можно оценить фон. Выбор размера коробки требует от пользователя некоторой осторожности. Размер коробки, как правило, должен быть больше, чем типичный размер источники на изображении, но достаточно маленькие, чтобы инкапсулировать любой фон вариации. Для достижения наилучших результатов размер коробки также следует выбирать таким образом. что данные покрыты целым числом полей в обоих размеры. Если это не так, то edge_method ключевое слово определяет, следует ли дополнить или обрезать изображение таким образом, чтобы целое число, кратное
box_size
в обоих измерениях.

Уровень фона в каждой из сеток рассчитывается с использованием функция или вызываемый объект (например, экземпляр класса), вводимые через ключевое слово bkg_estimator . Photutils предоставляет несколько фоновых классы, которые можно использовать:

  • Средний фон

  • Медианный фон

  • ModeEstimatorBackground

  • МММФон

  • SExtractorBackground

  • BiweightLocationBackground

По умолчанию используется экземпляр SExtractorBackground . Для этого метода фон в каждой сетке рассчитывается как (2,5 * медиана) - (1,5 * среднее) . Однако, если (среднее - медиана)/станд. > 0,3 то вместо этого используется медиана .

Аналогичным образом, уровень среднеквадратичного значения фона в каждой сетке рассчитывается с использованием ввод функции или вызываемого объекта с помощью ключевого слова bkgrms_estimator . Для этой цели Photutils предоставляет следующие классы:

  • StdBackgroundRMS

  • MADStdBackgroundRMS

  • BiweightScaleBackgroundRMS

Для еще большей гибкости пользователи могут ввести пользовательскую функцию или вызываемый объект на bkg_estimator и/или bkgrms_estimator ключевые слова.

По умолчанию bkg_estimator и bkgrms_estimator применяется к данным с сигма-усечением. Отсечение сигмы определяется вводом объект astropy. stats.SigmaClip для sigma_clip ключевое слово. По умолчанию выполняется отсечение сигма с

sigma=3 и maxiters=10 . Отсечение сигмы можно отключить, установив sigma_clip=Нет .

После определения уровня фона в каждом из ящиков фоновое изображение с низким разрешением может быть отфильтровано по медиане, с окном размером filter_size , чтобы подавить локальные недооценки или переоценки (например, из-за ярких галактик в конкретном прямоугольнике). Аналогично, медиана фильтр может быть применен только к тем полям, где уровень фона выше указанного порога ( filter_threshold ).

Фон с низким разрешением и фоновые RMS-изображения изменены на исходный размер данных с использованием функции или вызываемого объекта ввод через интерполятор ключевое слово. Photutils предоставляет два классы интерполятора: BkgZoomInterpolator (по умолчанию), который выполняет сплайн-интерполяцию и BkgIDWInterpolator , который использует взвешенная по обратному расстоянию (IDW) интерполяция.

Для этого примера мы создадим тестовый образ, добавив сильное фоновый градиент к изображению, определенному выше:

 >>> ny, nx = data.shape
>>> y, x = np.mgrid[:ny, :nx]
>>> градиент = х * у / 5000,0
>>> data2 = данные + градиент
>>> plt.imshow(data2, norm=norm, origin='lower', cmap='Greys_r',
... интерполяция = 'ближайший')
 

( Исходный код , png , нанимает.png , pdf , svg )

Начнем с создания объекта Background2D с использованием поля размером 50 x 50 и медианного фильтра 3 x 3. Мы оценим уровень фона в каждой сетке как медиану с сигма-обрезанием с использованием экземпляр MedianBackground .

 >>> из astropy.stats импортировать SigmaClip
>>> из photutils.background импортировать Background2D, MedianBackground
>>> sigma_clip = SigmaClip(sigma=3.0)
>>> bkg_estimator = Медианный фон()
>>> bkg = Background2D(data2, (50, 50), filter_size=(3, 3),
. .. sigma_clip=sigma_clip, bkg_estimator=bkg_estimator)
 

2D-фон и фоновые RMS-изображения извлекаются с помощью background и background_rms атрибуты соответственно на возвращаемый объект. Версии этих изображений с низким разрешением хранятся в атрибутах background_mesh и background_rms_mesh , соответственно. Глобальное медианное значение фона низкого разрешения а фоновое изображение RMS можно получить с помощью background_median и background_rms_median атрибутов, соответственно:

 >>> печать (bkg.background_median)
10.821997862561792
>>> печать (bkg.background_rms_median)
2,298820539683762
 

Нарисуем фоновое изображение:

 >>> plt.imshow(bkg.background, origin='lower', cmap='Greys_r',
... интерполяция = 'ближайший')
 

( Исходный код , png , нанимает.png , pdf , svg )

и фоновое изображение:

 >>> plt. imshow(data2 - bkg.background, norm=normal, origin='lower',
... cmap='Greys_r', интерполяция='ближайший')
 

( Исходный код , png , нанимает.png , pdf , svg )

Маскировка

Маски также можно вводить в Background2D . маска Ключевое слово может использоваться для маскировки источников или плохих пикселей на изображении. до оценки фоновых уровней.

Кроме того, coverage_mask ключевое слово можно использовать для маскировки пробела области без покрытия данными (например, из повернутого изображения или изображения из мозаики). В противном случае значения данных в регионах без покрытие (обычно нули или NaN) неблагоприятно повлияет на фон статистика. В отличие от mask , coverage_mask применяется к выходу фоновые и фоновые карты RMS. Ключевое слово fill_value определяет значение, присвоенное в выходных фоновых и фоновых картах RMS где вход coverage_mask равно True .

Давайте создадим повернутое изображение с пустыми областями и построим его (ПРИМЕЧАНИЕ: этот пример требует scipy):

 >>> из scipy.ndimage импортировать повернуть
>>> данные3 = вращать(данные2, -45.0)
>>> норма = ImageNormalize(stretch=SqrtStretch())
>>> plt.imshow(data3, origin='lower', cmap='Greys_r', norm=norm,
... интерполяция = 'ближайший')
 

( Исходный код , png , нанимает.png , pdf , svg )

Теперь мы создаем маску покрытия и вводим ее в Background2D , чтобы исключить регионы, в которых мы нет данных. В этом примере мы устанавливаем для fill_value значение 0,0. Для реальных данных, обычно можно создать маску покрытия из веса или шума изображение. В этом примере мы также используем меньший размер окна, чтобы помочь захватывать сильный градиент на заднем плане. Мы также увеличиваем стоимость exclude_percentile 9Ключевое слово 0026, чтобы включить больше полей по краю повернутое изображение:

 >>> маска_покрытия = (данные3 == 0)
>>> bkg3 = Background2D(data3, (15, 15), filter_size=(3, 3),
. .. маска_покрытия=маска_покрытия, значение_заполнения=0.0,
... exclude_percentile=50.0)
 

Обратите внимание, что маска покрытия применяется к выходному фону. изображение (значения присвоены fill_value ):

 >>> норма = ImageNormalize(stretch=SqrtStretch())
>>> plt.imshow(bkg3.background, origin='lower', cmap='Greys_r', norm=norm,
... интерполяция = 'ближайший')
 

( Исходный код , png , нанимает.png , pdf , svg )

Наконец, давайте вычтем фон из изображения и построим его:

 >>> норма = ImageNormalize(stretch=SqrtStretch())
>>> plt.imshow(data3 - bkg3.background, origin='lower', cmap='Greys_r',
... норма=норма, интерполяция='ближайший')
 

( Исходный код , png , нанимает.png , pdf , свг )

Если на изображении все еще присутствует небольшой остаточный фон, вычитание фона можно улучшить, маскируя источники и/или посредством дальнейших итераций.

Построение сеток

Наконец, сетки, которые использовались при создании 2D фон можно нанести на исходное изображение с помощью метод plot_meshes() . Мы тут увеличьте небольшую часть изображения, чтобы показать фоновые сетки. Сетки без маркера центра были исключены.

 >>> plt.imshow(data3, origin='lower', cmap='Greys_r', norm=norm,
... интерполяция = 'ближайший')
>>> bkg3.plot_meshes(outlines=True, marker='.', color='cyan', alpha=0.3)
>>> plt.xlim(0, 250)
>>> plt.ylim(0, 250)
 

( Исходный код , png , нанимает.png , pdf , svg )

Ссылка/API

Этот подпакет содержит инструменты для оценки фона и фона RMS в изображении.

Классы

Background2D (данные, box_size, *[ маска, ...])

Класс для оценки двумерного фона и фонового среднеквадратичного шума в изображении.

BackgroundBase ([sigma_clip])

Базовый класс для классов, оценивающих скалярные фоновые значения.

BackgroundRMSBase ([sigma_clip])

Базовый класс для классов, оценивающих скалярные фоновые значения RMS.

BiweightLocationBackground ([c, M])

Класс для вычисления фона в массиве с использованием расположения двух весов.

BiweightScaleBackgroundRMS ([c, M])

Класс для расчета среднеквадратичного значения фона в массиве в виде (сигма-обрезания) двухвесовой шкалы.

BkgIDWInterpolator (*[ leafsize, ...])

Этот класс создает полноразмерные фоновые изображения и среднеквадратичные изображения фона из изображений сетки с более низким разрешением с использованием интерполяции с взвешиванием обратных расстояний (IDW) ( ShepardIDWInterpolator ).

BkgZoomInterpolator (*[ порядок, режим, cval, . ..])

Этот класс создает полноразмерные фоновые и среднеквадратичные изображения фона из изображений сетки с более низким разрешением, используя зум (сплайн) интерполятор.

MADStdBackgroundRMS ([sigma_clip])

Класс для расчета среднеквадратичного значения фона в массиве с использованием среднего абсолютного отклонения (MAD).

МММФон (**kwargs)

Класс для расчета фона в массиве по алгоритму DAOPHOT MMM.

Средний фон ([sigma_clip])

Класс для вычисления фона в массиве как среднее (отсеченное сигма).

Медианный фон ([sigma_clip])

Класс для вычисления фона в массиве как медианы (отсеченной по сигме).

ModeEstimatorBackground ([медианный_фактор, ...])

Класс для вычисления фона в массиве с использованием оценщика режима формы (медианный_фактор * медиана) - (средний_фактор * среднее) .

SExtractorBackground ([sigma_clip])

Класс для вычисления фона в массиве с использованием алгоритма Source Extractor.

StdBackgroundRMS ([sigma_clip])

Класс для расчета среднеквадратичного значения фона в массиве как стандартное отклонение (отсеченное сигма).

Схема наследования классов

[css3] background-size - 배경 이미지 크기 조절

[개발]프로그래밍/css3

[css3] background-size — краткий размер файла

좋은 블로그 2021. 4. 15. 10:41

1. 개념

background-size - 배경 이미지 크기 조절

background-size

속성

설명

авто

원래 배경 이미지 크기만큼 표시(기본 값)

содержат

지정한 요소 안에 배경 이미지가 다 들어오도록 이미지를 확대/축소

крышка

지정한 요소를 다 덮도록 배경이미지를 확대/축소

크기 값

너비 값과 높이 값을 지정

백분율

지정한 요소를 기준으로 백분율 값을 지정

2. Номер телефона

размер фона

html5 코드

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<голова>

<метакодировка "=" "утф-8" >

<название> 키보드와 하루

<стиль>

раздел

{

маржа сверху : 20 пикселей ;

ширина : 300 пикселей ;

высота : 300 пикселей ;

фоновое изображение : URL(монитор.png) ;

граница : 1px сплошной #000 ;

дисплей : встроенный блок ;

}

<тело>

<стиль div "=" размер фона : авто ' >

<стиль div "=" размер фона : содержать ' >

<стиль div "=" размер фона : крышка ' >

<стиль div "=" размер фона : 30 пикселей 30 пикселей ' >

<стиль div "=" размер фона : 20% ' >

결과 화면

background-size 사용 예제

코드 설명

background-size : авто ;

기본 값에 해당합니다.
원래 배경 이미지 사이즈로 div를 채우게 됩니다.

размер фона : содержать ;

2 번이 содержат 일 때 보는 것인데 3 번하고 약간 차이가 있는게 너비가 100px이고 높이가 89px 이기에 요소 안에 배경 이미지가 들어오도록 이미지를 확대하는 것입니다.
. 됩니다

размер фона : крышка ;

обложка 를 맞추게 됩니다.

размер фона : 30 пикселей 30 пикселей ;

너비는 30px , 높이는 30px로 이미지를 설정하게 되면 그만큼 이미지가 나오면서 요소 에 이미지가 들어오도록 반복을 하고 있습니다.

размер фона : 20% ;

백분율은 요소의 사이즈에 맞게 이미지의 크기를 구해서 배경이미지를 확대하거 나 축소해서 표시를 하게 됩니다.
현재 div 요소의 사이즈는 300*300 으로 이미지는 60*60의 사이즈로 반복을 하게 됩니다.

'[개발]프로그래밍 > css3' 카테고리의 다른 글
[css3] background-origin - 배경 이미지 배치 기준 조절  (0) 2021.04.16
[css3] background-position - 배경 이미지 위치 조절  (0) 2021.04.15
[css3] background-repeat - 배경 이미지 반복 방법  (0) 2021.04.14
[css3] background-image - 배경 이미지 삽입  (0) 2021.04.14
[css3] background-clip - 배경색 적용 범위  (0) 2021.
Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *