SEG, RTSTRUCT i maski binarne to nie to samo
„Segmentacja” brzmi jak jedno pojęcie. W rzeczywistości obejmuje trzy różne struktury danych, z których każda zachowuje i niszczy inne informacje. Ta sekcja wyjaśnia, czym każda z nich naprawdę jest — co przechowuje, jak reprezentuje geometrię i co z tego wynika dla późniejszego zastosowania ilościowego — tak aby po zniknięciu maski albo przesunięciu granicy było wiadomo, która reprezentacja utraciła informację.
Ten sam guz, trzy formy zapisu
Po segmentacji guza możesz zapisać wynik jako binarną maskę NumPy, DICOM SEG albo RTSTRUCT. Wszystkie trzy reprezentacje opisują, „które woksele są guzem”, ale przenoszą inną geometrię, inne odwołania i zapewniają inną wierność. Konwersja między nimi powoduje straty, za każdym razem w inny sposób. Znajomość tych strat pozwala uniknąć cichego uszkadzania segmentacji przy każdej zmianie narzędzia.
Binarna mapa etykiet (maska)
Binarna mapa etykiet jest dyskretną reprezentacją rastrową: tablicą 3D, w której
każdy element zawiera etykietę (1 = guz, 0 = tło; opcjonalnie może zawierać
wiele etykiet). Tablica leży na własnej siatce — o zadeklarowanym lub powiązanym
zewnętrznie początku układu, odstępach, kierunku i zasięgu — i z natury nie
współdzieli kształtu ani geometrii z żadnym obrazem. Jest również reprezentacją
końcową: sieć głębokiego uczenia do segmentacji zwykle zwraca logity lub
prawdopodobieństwa dla poszczególnych wokseli, a binarna mapa etykiet powstaje po
progowaniu lub wyborze zwycięskiej wartości dla każdego elementu. Taką końcową
tablicę etykiet przyjmuje PyRadiomics.
Jej zaletą jest łatwość wykorzystania: po wyrównaniu z siatką analizy maska jest bezpośrednio użyteczna. Słabością są pochodzenie i wierność. Sama tablica nie ma jawnego powiązania z obrazami źródłowymi, chyba że przechowuje się ją razem z obrazem, a ułamkowa informacja o granicy zostaje skwantowana w chwili binaryzacji maski. Towarzyszy jej także krytyczne wymaganie geometryczne, będące tematem sekcji o wspólnej przestrzeni: bezpośrednie użycie woksel po wokselu z obrazem odniesienia wymaga pełnej równości siatek — tego samego początku układu, odstępów, kierunku oraz rozmiaru i zasięgu, w granicach tolerancji określonych przez potok. Jeżeli siatki się różnią, przed połączeniem obu tablic element po elemencie maska wymaga jawnego przekształcenia uwzględniającego geometrię albo zmiany próbkowania do siatki odniesienia. Maska znajdująca się na innej poprawnej siatce nie jest sama w sobie błędem; błędem jest ciche uznanie jej za wyrównaną z obrazem.
DICOM SEG (Segmentation Storage)
Obiekt DICOM Segmentation jest pełnoprawnym obiektem DICOM, a kilka jego cech sprawia, że jest czymś więcej niż tablica maski.
Jego odwołanie do źródła może wskazywać CT. ReferencedSeriesSequence
(PS3.3 C.12.2) wymienia serie i instancje, do których się odwołano, a dla każdej
klatki DerivationImageSequence z wpisami SourceImageSequence może zawierać
źródłowe SOPInstanceUID. Te odwołania są warunkowe, a nie gwarantowane:
dopuszczalne zapisy SEG mogą pomijać odwołania do wyprowadzenia dla poszczególnych
klatek lub pozostawiać je puste — na przykład gdy geometria klatki jest powiązana
z serią źródłową przez Frame of Reference — a nawet jeśli odwołania istnieją,
identyfikują wskazane obiekty, zamiast poświadczać, że jeden obraz CT jest jedynym
źródłem. SEG zawierający te odwołania daje możliwy do odczytania maszynowego punkt
wyjścia do odpowiedzi na pytanie „dla których obrazów przeznaczona jest ta maska?”;
brak odwołań nie dowodzi, że SEG powstał znikąd.
Jego geometria jest wyrażana dla poszczególnych klatek albo we współdzielonych grupach funkcjonalnych: grupy funkcjonalne segmentacji (PS3.3 A.51.5) podają położenie płaszczyzny, orientację płaszczyzny i miary pikseli albo dla każdej klatki, albo wspólnie dla wielu klatek, a nie niezależnie w każdej klatce. To, które grupy warunkowe mają zastosowanie, zależy od sposobu kodowania. Puste klatki również mogą zostać pominięte. Położenia klatek deklarowane przez SEG należą do niego: SEG nie musi znajdować się na siatce CT — standard dopuszcza klatki SEG o rozmiarze lub rozdzielczości innych niż obrazy, do których się odwołują — dlatego może opisywać rzadki zbiór oznaczonych płaszczyzn. Z tego powodu procedurę wspólnej przestrzeni z poprzedniej sekcji stosuje się do obiektów SEG przed jakimkolwiek nałożeniem.
Jego tożsamość segmentu jest jawna: SegmentSequence definiuje numery,
etykiety i właściwości segmentów, na przykład „Tumour” i „Liver”, dzięki czemu SEG
z wieloma strukturami pozostaje samoopisowy, zamiast sprowadzać je do anonimowych
liczb całkowitych.
Jego sposoby kodowania różnią się tym, co zapisują dla każdego woksela.
Segmentation Type (0062,0001) rozróżnia między innymi BINARY (1 bit na
woksel, przynależność do segmentu), FRACTIONAL (zapisane próbki są 8-bitowymi
liczbami całkowitymi bez znaku; wartość ułamkową otrzymuje się przez podzielenie
próbki przez Maximum Fractional Value, a Segmentation Fractional Type określa,
czy ten iloraz oznacza PROBABILITY, czy OCCUPANCY — zapisana liczba całkowita
jest kodem skalowanym, a nie sama w sobie prawdopodobieństwem) oraz LABELMAP
(całkowitoliczbowa etykieta każdego woksela, 8- lub 16-bitowa, kodująca wiele
nienakładających się segmentów w jednym obiekcie — najbliższy w DICOM odpowiednik
tablicy maski z wieloma etykietami) (PS3.3 C.8.20.2). W danych pikselowych
segmentacja binarna jest pakowana po 8 jednobitowych pikseli w jednym bajcie
(pakowanie bitów według PS3.5); zapisy ułamkowe i mapy etykiet używają próbek
całkowitoliczbowych wielkości bajtu lub słowa i bardziej przypominają tablicę, ale
nadal wymagają dekodera. Użyj highdicom, dcmqi albo udostępnionej przez
TRACE-CT funkcji decode_seg_file().
RTSTRUCT (RT Structure Set Storage)
Starszy format stosowany w radioterapii zapisuje struktury jako kontury —
uporządkowane listy punktów 3D we współrzędnych pacjenta — a nie jako woksele.
PS3.3 (C.8.8.6) definiuje geometryczne typy konturu POINT, OPEN_PLANAR,
OPEN_NONPLANAR, CLOSED_PLANAR i CLOSEDPLANAR_XOR, dlatego nie każdy kontur
jest zamkniętym obrysem przekroju. Opcjonalne
atrybuty Source Pixel Planes Characteristics mogą rejestrować płaszczyzny obrazu,
na których narysowano kontury. Geometria znajduje się we współrzędnych konturu,
a wnętrze woksela powstaje dopiero w etapie rasteryzacji, który wypełnia
kontury na siatce docelowej — siatce, której ten format nie dostarcza i którą
trzeba wybrać. Możliwe błędy zależą od sposobu wykonania tego etapu: wybranej
siatki docelowej i konwencji rasteryzacji, obsługi niejednoznacznych lub
nieprawidłowych danych wejściowych (zagnieżdżonych konturów sugerujących otwory,
nieobsługiwanych typów konturów, niespójnego powiązania konturów z płaszczyznami)
oraz założonego powiązania konturów z płaszczyznami. Poprawny kontur zamknięty
płaski jest z definicji domknięty; praktyczne ryzyko tkwi w niejednoznaczności
konwencji i przypadkach brzegowych niewidocznych w masce wynikowej. Konwersja
RTSTRUCT↔maska zależy więc od narzędzia i wymaga weryfikacji, a nie ślepego zaufania.
Gdzie informacje giną niezauważalnie
Konwersja reprezentacji w obie strony niszczy informacje w określony sposób. Niektóre straty są nieodłączne od zmiany reprezentacji, a inne powstają wyłącznie wtedy, gdy wywołuje je wybrana polityka konwersji. Oto lista, którą warto zachować:
Gdzie konwersja SEG↔maska traci informacje:
Straty nieodłączne od zmiany reprezentacji:
- binarna kwantyzacja ułamkowej granicy (woksel o zajętości 0.7 staje się 1), ilekroć FRACTIONAL SEG zostaje przekształcony w maskę binarną;
- utrata odwołań do obrazów źródłowych, jeżeli wyeksportowana zostaje wyłącznie sama maska
.nrrd.Straty zależne od wybranej polityki konwersji:
- przypisanie metodą najbliższego sąsiada, gdy siatka klatek SEG jest drobniejsza lub grubsza od siatki CT — występuje tylko wtedy, gdy konwersja zmienia próbkowanie do tej siatki interpolatorem najbliższego sąsiada;
- pominięcie klatek segmentów leżących poza zasięgiem obrazu odniesienia — występuje tylko wtedy, gdy wybrana polityka zasięgu je odrzuca, zamiast zachować klatki lub rozszerzyć siatkę.
Utratę odwołań najłatwiej spowodować i najtrudniej zauważyć, a to, co jeszcze
przetrwa, zależy od formatu eksportu i przenoszonych przez niego danych. Sama
binarna maska .nrrd wyeksportowana bez zachowanych metadanych traci warstwę
specyficzną dla DICOM: odwołania do obrazów źródłowych
(ReferencedSeriesSequence i źródłowe SOPInstanceUID, które wiązały maskę z
określonymi przekrojami CT — sama tablica nie wskazuje już, do którego CT należy)
oraz kodowane opisy segmentów (nazwane, kodowane właściwości segmentów stojące
za etykietami). Żadna z tych strat nie wynika z samego formatu tablicy: NRRD może
przechowywać geometrię siatki i niestandardowe metadane klucz-wartość w nagłówku
lub pliku towarzyszącym, a eksport z wieloma etykietami zachowuje całkowitoliczbową
tożsamość każdego segmentu. Ułamkowe szczegóły granicy giną tylko przy binaryzacji
eksportu — FRACTIONAL SEG wyeksportowany z zachowaniem wartości ułamkowych je
zachowuje, a eksport binarny kwantyzuje je do 0/1. Do obliczeń maska jest
wystarczająca; na potrzeby wymiany i zachowania pochodzenia danych przechowuj SEG
albo przynajmniej zapisuj źródłowe UID i opisy segmentów razem z maską.
To schemat reprezentacji, a nie pełne kodowanie DICOM: rzeczywiste kodowanie danych pikselowych SEG obejmuje pakowanie bitów dla BINARY i skalowanie wartości dla FRACTIONAL, a standardy definiują także geometrię poszczególnych klatek, odwołania do obrazów źródłowych oraz semantykę konturów RTSTRUCT. Próg 0,5 i sposób utworzenia 16-wierzchołkowego konturu są wyborami tego przykładu, a nie uniwersalnymi konwencjami; żadna z pokazanych reprezentacji nie jest uniwersalnie najlepsza.
Na ścieżce poświęconej CT i radiomice znaczenie mają dwie konwersje, które rzeczywiście będziesz wykonywać. Pierwsza: dekodowanie SEG na siatkę odniesienia wraz ze sprawdzeniem, czy geometria poszczególnych klatek SEG odpowiada geometrii CT, oraz zmianą próbkowania tam, gdzie się różnią. Druga: konwersja maski w obie strony (maska → SEG → maska) i rozpoznanie, gdzie utraciła wierność: ułamkowe krawędzie stają się binarne zawsze, gdy konwersja w obie strony obejmuje binaryzację, a klatki poza siatką docelową są przypisywane do najbliższego woksela odniesienia tylko wtedy, gdy wybrana polityka tej konwersji zmienia ich próbkowanie metodą najbliższego sąsiada — jest to wybór polityki, nie prawo formatu.
Obie konwersje prowadzą wprost do tej samej operacji — przenoszenia danych wokseli między siatkami — a obraz i maska nie przetrwają tego przeniesienia według tych samych reguł. Następna sekcja wyjaśnia, dlaczego zmiana próbkowania obrazu i maski musi przebiegać inaczej oraz dlaczego ten wybór wpływa na każdą cechę zależną od granicy.
Źródła
- DICOM PS3.3, Segmentation Image Module (C.8.20.2) — wartości
Segmentation Type(0062,0001) i ograniczenia kodowania (BINARY 1-bit, FRACTIONAL jako próbki 8-bitowe zSegmentation Fractional Type/Maximum Fractional Value, LABELMAP 8/16-bit dla nienakładających się segmentów), opisy segmentów wSegmentSequencei wymagania pakowania bitów BINARY. (bieżące wydanie) - DICOM PS3.3, Segmentation Functional Groups (A.51.5) — warunkowe grupy Pixel Measures, Plane Position (Patient), Plane Orientation (Patient), Derivation Image i Source Image dla poszczególnych klatek, w tym warunki ich współdzielenia między klatkami lub pominięcia. (bieżące wydanie)
- DICOM PS3.3, Common Instance Reference Module (C.12.2) — semantyka
ReferencedSeriesSequenceiReferencedInstanceSequence. (bieżące wydanie) - DICOM PS3.5, Encoding of Pixel, Overlay and Waveform Data (Section 8) — natywne kodowanie i pakowanie bitów danych pikselowych, w tym jednobitowych próbek BINARY. (bieżące wydanie)
- DICOM PS3.3, ROI Contour Module (C.8.8.6) — sekwencje konturów RTSTRUCT, dane konturów, geometryczne typy konturów (zamknięte/otwarte, płaskie/niepłaskie, punktowe) i Source Pixel Planes Characteristics. (bieżące wydanie)
- Dokumentacja highdicom, Segmentation (SEG) Images — tworzenie i dekodowanie segmentacji BINARY, FRACTIONAL i LABELMAP, geometria klatek oraz sekwencje wyprowadzenia dla poszczególnych klatek. (stabilna dokumentacja)
- Przewodnik dcmqi —
segimage2itkimage/itkimage2segimage: konwersja DICOM SEG ↔ obrazy etykiet ITK/NRRD oraz metadane wymagane przez te konwersje. (oficjalny przewodnik) - Implementacja towarzysząca TRACE-CT — przepływ dekodowania SEG tego projektu
(
decode_seg_file()), ograniczony do wskazanego commitu; przykład towarzyszący, a nie standard. (commit)
© 2026 Adrian Tkacz · BioMedical-IT
Oryginalne teksty i ilustracje są udostępniane na licencji Creative Commons Uznanie autorstwa–Użycie niekomercyjne 4.0 Międzynarodowe (CC BY-NC 4.0), o ile nie zaznaczono inaczej. Przy ponownym wykorzystaniu proszę podać Adrian Tkacz / BioMedical-IT jako autora i zamieścić odnośnik do oryginalnego źródła. Materiały osób trzecich zachowują własne prawa i warunki licencyjne.