2016-03-19 5 views
0

Wenn ich mit dieser Dimension 240x180 haben Bild Mittlere finden können und ich möchte Matlab verwenden, so dass ich muss am Ende 108 Ergebnisse extrahieren, ich kenne die Konzepte von MAD, indem ich Mittelwerte für jedes 20x20 Subpixel finde, dann finde die Summe des absoluten Wertes der Differenz zwischen jedem Pixel und berechnetem Mittelwert.Wie ich absolute Abweichung für Bild von Matlab

Ich fing an, etwas zu machen, um Bild (240x180) zu teilen das Teilbild mit dieser Dim (20x20) und ich muss 108 Teilbild haben, aber das Ergebnis nur 84 Block Ich weiß nicht warum, können Sie Blick auf den folgenden Code:

>> I = imread('myimage-path') 
>> %the size of image 180x240 
>> [r,c] = size(I); 
>> bs = 20; % size of block 
>> nsb = (r/bs) * (c/bs); % total number of block (108 block) 
>> %Dividong the image into 20x20 block 
>> kk=0; 
>> for i=1:(r/bs) 
    for j=1:(c/bs) 
    Block(:,:,kk+j)=I((bs*(i-1)+1:bs*(i-1)+bs),(bs*(j-1)+1:bs* (j-1)+bs)); 
    end 
    kk=kk+(r/bs); 
    end 

Dann habe ich leeres Array definiert alle 108 Blöcke in diesem Array zu speichern, um meine Werke auf diesen Blöcken

>> allBlocks = [[],[],[]] 
>> for h=1:84 
allBlocks(:,:,h) = Block(:,:,h); 
end 

>> size(allBlocks) 
>> % result 20 20 84 

Antwort

0

sein zu vervollständigen Mögest du in Distinct Blockverarbeitungsfunktionen verwenden können, Dieser Fall

0

betrachten Sie dieses Problem auf diese Weise!
1. Erstellen Sie eine Funktion MAD (nimmt in einem iamge)
2. 2 Loops formulieren, die Fenster (oder Sub-Bilder oder Vorlagen), um Ihre Funktion übergeben wird. Mit dem Operator: können Sie den Bereich für Ihr Unterbild angeben.
3. Sie können Formulieren Sie eine 3-D-Array Sie die Ausgabe mit einer Abmessung von 20x20X180 zu speichern.
4. Und Viel Glück !!
Vorsicht!

+0

Ich begann Bild zu Teilbild zu teilen wie der obige Code in der Post und ich bekomme nur 84 Block, aber ich hätte 108 Block Ich weiß nicht, was das Problem in diesem Fall ist –

0

Ich denke, wenn Sie in der zweiten Schleife kk=kk+(r/bs)(r/bs) Teilung gibt einen gerundeten Wert für einige r und bs und somit nicht auf den Wert von k die Art und Weise hinzugefügt werden, sollte es

Verwandte Themen