MATLAB is een programmering instrument dat kan worden gebruikt voor uitgebreide signaal en beeld analyse en verwerking. Een gemeenschappelijke operatie in de verwerking van enkelvoudige of multidimensionale signalen is het verwijderen van hoge-frequentie ruis. Een low-pass filter per definitie is ontworpen voor het verwijderen van signaal boven een bepaalde drempel van de frequentie. Met de functie filter2() in MATLAB is unidirectioneel van het uitvoeren van een low-pass filter.
Uw gegevens importeren in MATLAB. Ruwe signalen nodig hebben filteren zijn vaak opgenomen in binaire indeling, waarvoor een low-level bestand I/O functie te importeren, zoals fread() vereist. MATLAB bevat echter ingebouwde afbeelding importeurs voor de meest voorkomende bestandsindelingen.
my_data = fread (file_handle, n_samples, data_type);
my_image = imread('my_image_file.tif','TIFF');Gegevens converteren naar een tweedimensionale matrix vóór de verwerking met de filter2() functie. U kunt dit doen door eendimensionale binaire gegevens te converteren naar een matrix met de reshape() functie, of door het selecteren van een afbeelding uit een serie van de afbeelding. De functie squeeze() singleton dimensies verwijderen bij het selecteren van een deel van een matrix met meer dan twee dimensies.
my_image = omvormen (my_data, breedte, hoogte);
my_other_image = squeeze (my_image_series (:,:, image_number));Uw filter kunt ontwerpen en het resultaat opslaan als de tweedimensionale matrix H. Een Gaussiaanse venster wordt vaak gebruikt voor laagdoorlaatfilter-toepassingen en kan worden gemaakt met de fspecial() functie. Filters kunnen ook worden ontworpen in MATLAB de signaalverwerking gereedschap functie sptool(). Hier vindt u de frequentierespons van het filtervenster met behulp van de functie wvtool(). In de voorbeeldcode is H een matrix van de 24-door-24 met een Gaussiaans window van standaarddeviatie 10.
H = fspecial ('Gaussiaans', [24 24], 10);
wvtool(H);De filtering met behulp van de twee-dimensionale convolutie algoritme geïmplementeerd door filter2() uit te voeren. Standaard is het resultaat van filter2() van dezelfde afmetingen als de invoergegevens.
my_filtered_data = filter2 (my_data, H);