Что такое стеганое одеяло patchset?

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

import numpy as np
from scipy.spatial import Voronoi

#taken from: # https://stackoverflow.com/questions/28665491/getting-a-bounded-polygon-coordinates-from-voronoi-cells
#computes voronoi regions bounded by a bounding box
def square_voronoi(xy, bbox): #bbox: (min_x, max_x, min_y, max_y)
    # Select points inside the bounding box
    points_center = xy[np.where((bbox[0] <= xy[:,0]) * (xy[:,0] <= bbox[1]) * (bbox[2] <= xy[:,1]) * (bbox[2] <= bbox[3]))]
    # Mirror points
    points_left = np.copy(points_center)
    points_left[:, 0] = bbox[0] - (points_left[:, 0] - bbox[0])
    points_right = np.copy(points_center)
    points_right[:, 0] = bbox[1] + (bbox[1] - points_right[:, 0])
    points_down = np.copy(points_center)
    points_down[:, 1] = bbox[2] - (points_down[:, 1] - bbox[2])
    points_up = np.copy(points_center)
    points_up[:, 1] = bbox[3] + (bbox[3] - points_up[:, 1])
    points = np.concatenate((points_center, points_left, points_right, points_down, points_up,), axis=0)
    # Compute Voronoi
    vor = Voronoi(points)
    # Filter regions (center points should* be guaranteed to have a valid region)
    # center points should come first and not change in size
    regions = [vor.regions[vor.point_region[i]] for i in range(len(points_center))]
    vor.filtered_points = points_center
    vor.filtered_regions = regions
    return vor

#also stolen from: https://stackoverflow.com/questions/28665491/getting-a-bounded-polygon-coordinates-from-voronoi-cells
def area_region(vertices):
    # Polygon's signed area
    A = 0
    for i in range(0, len(vertices) - 1):
        s = (vertices[i, 0] * vertices[i + 1, 1] - vertices[i + 1, 0] * vertices[i, 1])
        A = A + s
    return np.abs(0.5 * A)

def f(x,y):
    return np.cos(10*x*y) * np.exp(-x**2 - y**2)

#sampling could easily be shaped to sample origin more heavily
sample_x = np.random.rand(1000) * 10 - 5 #same range as example linspace
sample_y = np.random.rand(1000) - .5
sample_xy = np.array([sample_x, sample_y]).T

vor = square_voronoi(sample_xy, (-5,5,-.5,.5)) #using bbox from samples
points = vor.filtered_points
sample_areas = np.array([area_region(vor.vertices[verts+[verts[0]],:]) for verts in vor.filtered_regions])
sample_z = np.array([f(p[0], p[1]) for p in points])

volume = np.sum(sample_z * sample_areas)

Я не совсем проверял это, но принцип должен работать, и математика проверяется.

13
задан nohat 20 April 2009 в 03:20
поделиться

3 ответа

Quilt - это инструмент для управления патчами . Идея состоит в том, что вам будет проще поддерживать несколько отдельных наборов изменений в одном исходном клиенте, даже если они затрагивают одни и те же файлы.

Официальный сайт немногочислен в деталях, но стоит того, чтобы подумать об его использовании.

Если вы не использовали quilt, вам, вероятно, просто нужно создать другого клиента для поддержки отдельные наборы изменений, но вам придется исправлять изменения, которые принесут пользу обоим исходным деревьям клиента.

17
ответ дан 1 December 2019 в 19:32
поделиться

Набор патчей для квилта - это специальная серия патчей, разработанная для использования с инструментарием Quilt.

Quilt

Quilt - это, по сути, инструментарий управления патчами. Где это отличается от мерзавца в том, что у него нет постоянной истории: сами патчи могут иметь поле scription, которое обычно соответствует метаданным коммита в git. куда Quilt отличается от Git в закреплении набора патчей (Quilt просто ряд исправлений над извлеченной исходной базой, без каких-либо идентификация фактической исправляемой исходной базы).

Git, Quilt и другие инструменты обслуживания ядра (PDF)

11
ответ дан 1 December 2019 в 19:32
поделиться

Набор патчей для квилта - это набор патчей, которые были обработаны и собраны вместе с помощью quilt.

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

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

Для получения дополнительной информации об использовании patch и diff, Десятиминутный справочник по diff и patch

Для получения информации о стеганом одеяле попробуйте следующее: Quilt, система управления исправлениями , man-страница quilt и Страница проекта Quilt

7
ответ дан 1 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: