2016-12-06 17 views
1
function vars = nonlinear(f) 
p = colfilt(f , [3 , 3] ,'sliding',@vimabsolute); 
imshow (p); 
end 

function v = vimabsolute(A) 
[a ~] = size(A); 
q =rand(1,a); 
v = q * A; 
end 

B = colfilt(A,[M N],'sliding',FUN) rearranges each M-by-N sliding 
neighborhood of A into a column in a temporary matrix, and then applies 
the function FUN to this matrix. FUN must return a row vector containing 
a single value for each column in the temporary matrix. (Column 
compression functions such as SUM return the appropriate type of 
output.) colfilt then rearranges the vector returned by FUN into a 
matrix of the same size as A. 

Ich möchte nur versuchen, wenn die colfilt Funktion könnte in der Dokumentation erwähnt work.As, A eine 9 von MN matrice, aber es läuft zurück FehlermeldungFehler die colfilt Funktion in MATLAB mit

Error using * 
MTIMES does not fully support integer classes. At least one input must be scalar 

Was mache ich falsch?

+0

Wie laden Sie Ihr Bild? – excaza

+0

@excaza f = imread ('XX.jpg') und nichtlineare (f) – DennngP

Antwort

0

Obwohl die Dokumentation für zu implizieren scheint, dass es ganzzahlige Datentypen unterstützt, zeigt die Fehlermeldung, die Sie erhalten, eindeutig nicht. Ihre Variable q ist vom Typ double, aber Ihre Matrix A ist ein Integer-Typ, wahrscheinlich uint8, wie die meisten Bilder sind. Ich bin mir nicht sicher, welches Ergebnis Sie von Ihrer Funktion erwarten, aber es sieht so aus, als müssten Sie A in eine double umwandeln, um den Vorgang auszuführen. Hier sind ein paar Optionen, die Sie haben:

v = q * double(A);   % Cast A to double, result will now be double 
v = uint8(q * double(A)); % Cast back to uint8, results will be uint8 
          % and thus rounded off to nearest integer 
+0

Danke! Ich möchte diese Funktion verwenden, um die lokale Histogrammverarbeitung zu erreichen und ein einzelnes 'q' zu versuchen, um zu sehen, wie es funktioniert. Ich finde diese Funktion ist ein bisschen wie die CNN, die im2col und col2im verwendet, ist es richtig? – DennngP

+0

Tut mir leid, ich bin nicht vertraut mit der Verarbeitung, die Sie tun. Ich weiß nur, dass du es wahrscheinlich mit "double" -Typen machen musst, dann wandle es in den gewünschten Typ für das resultierende Bild um. – gnovice