Saturday 23 December 2017

Glidande medelvärde matlab funktion


Ett enkelt (ad hoc) sätt är att bara ta ett vägt genomsnitt (avstämbart av alfa) vid varje punkt med sina grannar: eller en viss variation därav. Ja, för att vara mer sofistikerad kan du Fourier förvandla dina data först och avklippa sedan högfrekvenserna. Något som: Detta skär ut de högsta 20 frekvenserna. Var försiktig med att klippa ut dem symmetriskt, annars är den omvända transformen inte längre riktig. Du måste noggrant välja cutoff-frekvensen för rätt nivå av utjämning. Detta är en mycket enkel typ av filtrering (boxfiltrering i frekvensdomänen), så du kan försiktigt försöka dämpa högfrekventa frekvenser om distorsionen är oacceptabel. svarade 4 okt 09 kl 9:16 FFT är inte en dålig idé, men det är förmodligen överkill här. Löpande eller rörliga medelvärden ger generellt dåliga resultat och bör undvikas för något förutom läxläxa (och vitt brus). Id använder Savitzky-Golay filtrering (i Matlab sgolayfilt (.)). Detta ger dig de bästa resultaten för vad du letar efter - lite lokal utjämning samtidigt som kurvformen hålls. Denna handledning diskuterar hur man använder MATLAB för bildbehandling. Viss kunskap om MATLAB antas (du borde veta hur man använder matriser och skriver en M-fil). Det är bra att ha MATLAB Image Processing Toolbox, men lyckligtvis behövs inga verktygslådor för de flesta operationer. Kommandon som kräver bildverktygslådan anges med Image Toolbox. Bildrepresentation Det finns fem typer av bilder i MATLAB. Gråskala. En gråskalebild M pixlar lång och N pixlar bred representeras som en matris av dubbel datatyp av storlek M N. Elementvärden (t. ex. MyImage (m, n)) betecknar pixelgråskalaintensiteterna i 0,1 med 0black och 1white. Truecolor RGB. En truecolor röd-grönblå (RGB) bild representeras som en tredimensionell M N 3 dubbelmatris. Varje pixel har röda, gröna, blåa komponenter längs den tredje dimensionen med värden i 0,1, till exempel är färgkomponenterna i pixeln (m, n) MyImage (m, n, 1) röd, MyImage (m, n, 2) grön, MyImage (m, n, 3) blue. Indexed. Indexerade (palettade) bilder representeras med en indexmatris med storlek M N och en kolormapmatris med storlek K 3. Colormapet innehåller alla färger som används i bilden och indexmatrisen representerar pixlarna genom att hänvisa till färger i colormap. Till exempel, om den 22: e färgen är magenta MyColormap (22, :) 1,0,1. då är MyImage (m, n) 22 en magenta-färgad pixel. Binary. En binär bild representeras av en M N logisk matris där pixelvärden är 1 (sann) eller 0 (falsk).uint8. Denna typ använder mindre minne och vissa operationer beräknar snabbare än med dubbla typer. För enkelhetens skull diskuterar inte denna handledning uint8 ytterligare. Gråskala är vanligtvis det föredragna formatet för bildbehandling. I fall som kräver färg kan en RGB-färgbild sönderföras och hanteras som tre separata gråskala bilder. Indexerade bilder måste konverteras till gråskala eller RGB för de flesta operationer. Nedan följer några vanliga manipuleringar och omvandlingar. Några kommandon kräver Image Toolbox och anges med Image Toolbox. Läsa och skriva bildfiler MATLAB kan läsa och skriva bilder med kommandona imread och imwrite. Även om ett rättvist antal filformat stöds, är vissa inte. Använd imformats för att se vad din installation stöder: När du läser bilder är ett olyckligt problem att imaterialet returnerar bilddata i uint8 datatyp, som måste konverteras till dubbel och återkalverad före användning. Så istället för att ringa direkt img använder jag följande M-fil-funktion för att läsa och konvertera bilder: Högerklicka och spara getimage. m för att använda denna M-funktion. Om bilden baboon. png finns i den aktuella katalogen (eller någonstans i MATLAB sökvägen) kan du läsa den med MyImage getimage (baboon. png). Du kan också använda partiella sökvägar, till exempel om bilden är i lt aktuella katalog gtimages med getimage (imagesbaboon. png). För att skriva en gråskala eller RGB-bild, använd försiktigt att MyImage är en dubbelmatris med element i 0,1if felaktigt skalad, den sparade filen kommer troligen att vara tom. När du skriver bildfiler rekommenderar jag starkt att använda PNG-filformatet. Detta format är ett pålitligt val eftersom det är förlustfritt, stöder truecolor RGB och komprimerar ganska bra. Använd andra format med försiktighet. Grundläggande operationer Nedan följer några grundläggande funktioner på en gråskalebild u. Kommandon som kräver bildverktygslådan anges med Image Toolbox. (Obs! För varje array betyder syntaxen u (:) att du rullar in i en kolumnvektor. Om du till exempel är 1,50,2, då är du (:) 1052.) Till exempel används bildsignalstyrka i beräkningssignal / brusförhållande (SNR) och toppsignal / brusförhållande (PSNR). Givet ren bild oclean och buller-förorenad bild du, Var försiktig med normen. beteendet är norm (v) på vektor v beräknar sqrt (summa (v.2)). men norm (A) på matris A beräknar den inducerade L 2 matrisnormen, så normen (A) är verkligen inte sqrt (summa (A (:). 2)). Det är ändå ett lätt misstag att använda norm (A) där det borde ha varit norm (A (:)). Linjära filter Linjär filtrering är hörnstenstekniken för signalbehandling. För att kort introducera är ett linjärt filter en operation där vid varje pixel x m, n av en bild, en linjär funktion utvärderas på pixeln och dess grannar för att beräkna ett nytt pixelvärde y m, n. Ett linjärt filter i två dimensioner har den allmänna formen där x är ingången, y är utgången och h är filterimpulssvaret. Olika val av h leder till filter som släpper, skärper och upptäcker kanter, för att nämna några applikationer. Den högra sidan av ovanstående ekvation betecknas kortfattat som hx och kallas konvolutionen av h och x. Spatial-domänfiltrering Tvådimensionell linjär filtrering implementeras i MATLAB med conv2. Tyvärr kan conv2 bara hantera filtrering nära bildgränserna med nollpolning, vilket innebär att filtreringsresultat vanligen är olämpligt för pixlar nära gränsen. För att arbeta runt detta kan vi padda inmatningsbilden och använda det giltiga alternativet när vi ringer conv2. Följande M-funktion gör detta. Högerklicka och spara conv2padded. m för att använda denna M-funktion. Här är några exempel: Ett 2D-filter h sägs vara separerbart om det kan uttryckas som ytterprodukten av två 1D-filter h1 och h2. det vill säga h h1 (:) h2 (:). Det är snabbare att passera h1 och h2 än h. som görs ovan för det glidande medelfönstret och det gaussiska filtret. Faktum är att filtret Sobel hx och han också är separablewhat är h1 och h2 Fourier-domänfiltrering. Spatial-domänfiltrering med conv2 är enkelt en komplementärt dyr operation. För ett K K-filter på en M N-bild kostar conv2 kostnader O (MNK 2) tillägg och multiplikationer, eller O (N 4) förutsätter M N K. För stora filter är filtrering i Fourier-domänen snabbare eftersom beräkningskostnaden reduceras till O (N 2 log N). Med användning av fultionsfördelningsegenskapen för Fouriertransformen beräknas konvolutionen likvärdigt av resultatet. Resultatet motsvarar conv2padded (x, h) utom nära gränsen, där ovanstående beräkning använder periodisk gränsvärde. Fourier-baserad filtrering kan också göras med symmetrisk gränsvärde genom att reflektera ingången i varje riktning: (Obs! En ännu effektivare metod är FFT-överlappningsfiltrering. Signalbehandlingsverktygslådan implementerar FFT-överlappning i en dimension i fftfilt .) Icke-linjära filter Ett icke-linjärt filter är en operation där varje filtrerad pixel ym, n är en olinjär funktion av xm, n och dess grannar. Här diskuteras kortfattat några typer av olinjära filter. Beställ statistikfilter Om du har bildverktygslåda kan ordningsstatistikfilter utföras med ordfilt2 och medfilt2. Ett orderstatistikfilter sorterar pixelvärdena över ett grannskap och väljer det största värdet. Min-, max - och medianfiltret är speciella fall. Morfologiska filter Om du har bildverktygslådan implementerar bwmorph olika morfologiska operationer på binära bilder, som erosion, utvidgning, öppning, stängning och skelett. Det finns också kommandon tillgängliga för morfologi på gråskalebilder: imerode. imdilat och imtophat. bland andra. Bygg ditt eget filter Ibland vill vi använda ett nytt filter som MATLAB inte har. Koden nedan är en mall för att implementera filter. (Obs! Ett vanligt felaktigt påstående är att slingorna i MATLAB är långsamma och bör undvikas. Det var en gång sant, tillbaka i MATLAB 5 och tidigare, men slingor i moderna versioner är relativt snabba.) Exempelvis är det alfa-trimmade medelfiltret ignorerar de d 2 lägsta och d 2 högsta värdena i fönstret och medlar de återstående (2 r 1) 2 d-värdena. Filtret är en balans mellan ett medianfilter och ett medelfilter. Det alfa-trimmade medelfiltret kan implementeras i mallen. Som ett annat exempel använder det bilaterala filtretSlideshare cookies för att förbättra funktionalitet och prestanda och förse dig med relevant reklam. Om du fortsätter att surfa på webbplatsen godkänner du användningen av cookies på denna webbplats. Se vår användaravtal och sekretesspolicy. Slideshare använder cookies för att förbättra funktionalitet och prestanda, och att ge dig relevant reklam. Om du fortsätter att surfa på webbplatsen godkänner du användningen av cookies på denna webbplats. Se vår sekretesspolicy och användaravtal för detaljer. Utforska alla dina favoritämnen i SlideShare-appen Få SlideShare-appen att spara till senare, även offline Fortsätt till mobilsidan Ladda upp Logga in Registrera dig Dubbelklicka för att zooma ut Grundläggande matlabprogram Dela denna SlideShare LinkedIn Corporation kopiera 2017

No comments:

Post a Comment