Spisu treści:
- Krok 1: Organizowanie danych mammograficznych
- Krok 2: Przetwarzanie obrazu
- Krok 3: Kod progowy
- Krok 4: Znajdowanie nieprawidłowości dla każdego obrazu binarnego
- Krok 5: Wykreślanie położenia i rozmiaru zdiagnozowanej masy w celu wizualnego porównania
- Krok 6: Implementacja drugiej metody porównawczej
- Krok 7: Analiza zebranych danych
- Krok 8: Tworzenie własnego klasyfikatora
- Krok 9: Ulepszenia? Jakieś pomysły?
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Celem tego projektu było zidentyfikowanie i wykorzystanie parametru do przetwarzania obrazów mammograficznych w skali szarości różnych klasyfikacji tkanek tła: tkanki tłuszczowej, gruczołowej tłuszczowej i tkanki gęstej. Ta klasyfikacja jest stosowana, gdy radiolodzy analizują mammogramy i muszą rozważyć, czy gęstość tkanki przesłoni jakiekolwiek nieprawidłowości, takie jak zmiany chorobowe lub guzy. Dzieje się tak, ponieważ zarówno normalne struktury fizjologiczne, takie jak tkanka gruczołowa, jak i włóknista tkanka łączna. a nieprawidłowe morfologie, takie jak zwapnienia i guzy, będą widoczne na mammogramie bardzo jasno, podczas gdy mniej gęsta tkanka tłuszczowa będzie czarna. Dlatego właściwe było zaprogramowanie klasyfikatora, który może manipulować poziomami intensywności pikseli, aby jak najlepiej wizualizować i identyfikować masy.
Krok 1: Organizowanie danych mammograficznych
Jedną z pierwszych rzeczy, z którymi zdałem sobie sprawę, że muszę sobie poradzić, było uporządkowanie danych w bardzo jasny, zwięzły i przystępny sposób. Są to zmienne, które wyodrębniłem z bazy danych mammografii mini-MIAS. Utworzyłem dwie tablice. Jedna zawierająca 4 kolumny:
- Numer obrazu:
- x współrzędna masy
- y współrzędna masy
- Promień masy: (To określiło przybliżony rozmiar masy
Druga tablica zawierała informacje klasyfikacyjne:
- Rodzaj tkanki tła: Tłuszczowa (F), Tłuszczowa gruczołowa (G), Gęsta (D)
- Opis masy: Dobrze zdefiniowana (CIRC), spikulowana (SPIC), źle zdefiniowana inna (MISC) Zniekształcenie architektoniczne (ARCH), Asymetria (ASYM), Normalna (NORM)
- Diagnozy: łagodne (B), złośliwe (M)
Ponieważ celem tego projektu było określenie najlepszego progu dla każdego rodzaju tkanki tła, nie wszystkie informacje były konieczne. Możesz jednak rozszerzyć swój projekt o analizę tekstur i przetestować swój klasyfikator ze znanymi opisami mas.
Uwaga dodatkowa: Baza danych, z której mam zdiagnozowane obrazy mammograficzne, zorganizowała informacje o każdej mammografii w pliku tekstowym, oddzielnym od obrazów. Było mi trochę trudno wyodrębnić dane z pliku tekstowego i uporządkować je w postaci tablic, ale poniższy link był bardzo pomocny w zrozumieniu tego wszystkiego. Alternatywnie, po prostu dostosuj kod, który wkleiłem powyżej, do swoich celów.
Format pliku mammogramu: mdb001 G CIRC B 535 425 197
mdb002 G OBWÓD B 522 280 69
Pomoc TextScan: https://www.mathworks.com/help/matlab/ref/textsca…Mammogram Database:
Krok 2: Przetwarzanie obrazu
Cóż, drugą rzeczą, która pojawiła się, gdy zastanawiałem się, jak zidentyfikować masy, było to, że w przypadku wielu nieprawidłowych mammogramów nie mogłem wizualnie stwierdzić, gdzie jest ta nieprawidłowość ani jak jest duża. Oczywiście, ponieważ nie jestem doświadczonym radiologiem, tego się spodziewano. Jednak najprostszym sposobem znalezienia nieprawidłowości (według moich długich wyszukiwań w Google) było przyjrzenie się koncentracji jasnych i ciemnych obszarów. Używałem przede wszystkim funkcji adapthisteq, aby zwiększyć kontrast obrazu, a następnie dokonać imbinaryzacji, aby przekonwertować obraz na obraz binarny, aby eksperymentować z różnymi poziomami progowymi.
- adapthisteq: Ta funkcja przekształca wartości intensywności obrazów w skali szarości i rgb przy użyciu adaptacyjnego wyrównania histogramu z ograniczonym kontrastem. Innymi słowy, dostosowuje histogram wartości intensywności do określonego typu rozkładu. Link do tej funkcji znajduje się poniżej w celu dalszej lektury.
- imbinarize: tworzy obraz binarny z obrazu w skali szarości, przypisując wszystkie piksele powyżej określonej intensywności do 1 s, a piksele poniżej tej wartości do 0. Użyłem tej funkcji, aby przetestować optymalny próg w celu zmniejszenia szumu tkanki w tle.
Krok 3: Kod progowy
Pętla for służy do binaryzacji mammografii z różnymi progami. Aby dać większy obraz, pętla for zawiera kod z kroku 3 do kroku 7. Tak więc każdy obraz binarny zostanie przeanalizowany pod kątem nieprawidłowości. Dodatkowo ta pętla for jest zawarta w innej pętli for, która w każdej iteracji importuje nowy obraz mammogramu z bazy danych.
Krok 4: Znajdowanie nieprawidłowości dla każdego obrazu binarnego
Następnie przetworzyłem obrazy binarne za pomocą funkcji strel w połączeniu z imopen, aby usunąć szum tła. Obraz binarny z poprzedniego kroku jest odwracany i filtrowany przy użyciu sąsiedztwa zdefiniowanego przez SE. Następnie użyłem bwlabel do oznaczenia dowolnych obszarów, które miały co najmniej 8 połączonych pikseli.
Funkcja region props została użyta do znalezienia właściwości środka ciężkości i obszaru każdego miejsca zidentyfikowanego przez bwlabel.
Następnie wszystkie plamki większe niż 500 pikseli zostały zidentyfikowane za pomocą ismember. Centroidy dla zidentyfikowanych plam zostały wykreślone na obrazie, który wyświetlał tylko plamy o powierzchni większej niż 500. Area Identified = ismember(Labeled, indicies(sortedAreas>500)); Plamy = Zidentyfikowane>0;
Krok 5: Wykreślanie położenia i rozmiaru zdiagnozowanej masy w celu wizualnego porównania
Chciałem sprawdzić, czy plamki znalezione przez bwlabel są poprawne. Zrobiłem to na dwa sposoby. Najpierw przeanalizowałem dokładność mojego klasyfikatora, dokonując wizualnego porównania. Po prostu wykreśliłem rzeczywisty rozmiar i lokalizację nieprawidłowości (czerwone kółko) oraz lokalizację określoną przez kod (niebieski x) na wstępnie przetworzonym obrazie mammograficznym. Sześć powyższych obrazów przedstawia efekty zwiększenia wartości progowej skali szarości.
Krok 6: Implementacja drugiej metody porównawczej
Drugim sposobem przetestowania klasyfikatora i wartości progowych było ustalenie, czy lokalizacje znalezione przez klasyfikator znajdują się w pewnej odległości od współrzędnych zdiagnozowanej nieprawidłowości. Zapisałem progi, dla których co najmniej jeden ze zidentyfikowanych punktów znajdował się w granicach 1,5*r od znanej nieprawidłowości, do osobnego pliku tekstowego o nazwie Mammogram Data. Celem tego było znalezienie minimalnego progu potrzebnego mojemu klasyfikatorowi do zidentyfikowania nieprawidłowości.
Krok 7: Analiza zebranych danych
Uruchomiłem program na wszystkich nieprawidłowych obrazach mammograficznych i zostałem z ogromnym plikiem tekstowym danych. Aby znaleźć najlepszy próg dla każdego typu tkanki, uporządkowałem dane według typu tkanki i wykreśliłem histogram wartości progowych dla każdego typu tkanki. Właściwa wartość progowa została ustalona na podstawie tego, który próg zapewnia najdokładniejsze wyniki dla każdego rodzaju tkanki. Zapisałem te dane, aby przesłać je do mojego klasyfikatora.
Krok 8: Tworzenie własnego klasyfikatora
Po znalezieniu najbardziej odpowiednich wartości progowych dla każdego rodzaju tkanki, zmodyfikowałem swój oryginalny kod, aby użytkownik wprowadził numer obrazu i typ tkanki, aby wybrać próg dla obrazu mammograficznego. Następnie wykreśliłem zdiagnozowaną lokalizację mammografii ze znalezionymi lokalizacjami na oryginalnych obrazach mammograficznych. Chciałem, aby było to przyjemniejsze, więc zaprogramowałem funkcję przycinania okrągłego obszaru otaczającego ROI. Użytkownik zostanie poinstruowany, aby wybrać punkt centralny i kilka punktów, które najlepiej obejmują obszar ROI. Załączam tutaj oba pliki Matlab.
Krok 9: Ulepszenia? Jakieś pomysły?
Kiedy pisałem tę instrukcję, zaczynam dostrzegać wiele ulepszeń, które mogę wprowadzić do klasyfikatora, takich jak znalezienie sposobów na rozróżnienie różnych typów mas zidentyfikowanych na podstawie analizy tekstury lub ulepszenie sekcji testowania pod kątem dokładności w SandBoxProject. plik. Ponieważ był to projekt z terminem, musiałem gdzieś się zatrzymać, ale mam nadzieję, że będę mógł wykorzystać umiejętności przetwarzania obrazu, których nauczyłem się w innych aplikacjach. Dołączyłem również plik, który został użyty do przetwarzania wsadowego wszystkich nieprawidłowych obrazów mammografii.