Bildgrößenänderung in MATLAB
In diesem Tutorial wird die Größenänderung eines Bildes mit der Funktion imresize()
in Matlab erläutert.
Ändern Sie die Größe eines Bildes mit der Funktion imresize()
in MATLAB
Wir können die Funktion imresize()
verwenden, um die Größe von Bildern in Matlab zu ändern. Diese Funktion ändert die Größe von Bildern, indem ihre Pixel vergrößert oder verkleinert werden. Wenn wir beispielsweise die Größe eines Bildes zweimal der Größe 100 x 100 ändern, beträgt seine endgültige Größe 200 x 200. Diese Funktion erstellt mehr Pixel unter Verwendung der bereits in der Nachbarschaft vorhandenen Pixelwerte. Wenn wir die Größe des Bildes verkleinern möchten, können wir einen Skalierungswert von weniger als 1 verwenden. In diesem Fall entfernt die Funktion imresize()
Pixel abhängig vom Größenänderungswert aus dem Bild. Wenn die Größenänderungsskala 0,5 beträgt, wird das Pixel halbiert. Das erste Argument ist das Bild, dessen Größe geändert werden soll. Es kann vom Typ logisch, numerisch und kategorial sein, aber die numerischen Werte sollten reell sein. Das zweite Argument ist die Skalierung oder der Größenänderungsfaktor, und es sollte eine positive Zahl sein. Lassen Sie uns zum Beispiel ein Bild mit der Funktion imread()
lesen und die Größe mit der Funktion imresize()
ändern und dann beides mit der Funktion imshow()
plotten. Siehe den Code unten.
clc
RGB = imread('cat.jpg');
RI = imresize(RGB,10);
figure
imshow(RGB)
figure
imshow(RI)
Ausgabe:
Das linke Bild ist das Originalbild in der Ausgabe und das rechte Bild ist das skalierte Bild. Sie können auch die Größe der Variablen überprüfen, in der die beiden Ausgabebilder gespeichert sind, und sie wird zehnmal größer als die Originalgröße sein. Enthält das Bild mehr als zwei Dimensionen, ändert die Funktion imresize()
nur die Grösse der ersten beiden Dimensionen, andere Dimensionen bleiben gleich. Wenn Sie sich beispielsweise im Fall des obigen Codes den Arbeitsbereich in Matlab ansehen, wissen Sie, dass die dritte Dimension sowohl im Originalbild als auch im skalierten Bild gleich ist. Anstatt eine ganze Zahl als Skalierungswert für die Größenänderung zu verwenden, können wir einen Vektor verwenden, um die Größe des Ausgabebilds zu definieren, z. B. [100 100], um ein Ausgabebild der Größe 100 x 100 zu erhalten. Lassen Sie uns beispielsweise die Größe des obigen Bildes ändern, um ein Bild der Größe 100 x 100 zu erhalten. Siehe den Code unten.
clc
RGB = imread('cat.jpg');
RI = imresize(RGB,[100 100]);
figure
imshow(RGB)
figure
imshow(RI)
Ausgabe:
Das linke Bild ist das Originalbild in der Ausgabe und das rechte Bild ist das skalierte Bild. Sie können auch die Größe des Ausgabebilds über dem rechten Bild sehen, die 100 x 100 beträgt. Die dritte Dimension wird nicht verändert, da sie die im Bild vorhandenen Farbwerte enthält. Wir können auch die Größe eines indizierten Bildes mit der Funktion imresize()
ändern. Ein indiziertes Bild unterscheidet sich von einem RGB-Bild, es besteht aus einem 2D-Array mit darin gespeicherten Byte-Daten und wir können auch andere Datentypen wie double, int16 usw. einfügen. Ein RGB-Bild enthält die Farbe als dritte Dimension, aber das indizierte Bild enthält Farbe als separate Colormap. Um die Größe eines indizierten Bildes zu ändern, müssen wir eine zweite Variable innerhalb der Funktion imresize()
verwenden, die die Colormap des Eingabebildes ist, die wir mit einer zweiten Ausgabe der Funktion imread()
erhalten. Die Größenänderungsfunktion gibt uns ein neues 2D-Array und eine neue Colormap. Um ein indiziertes Bild zu zeichnen, müssen wir das 2D-Array und die Karte verwenden. Lassen Sie uns beispielsweise ein indiziertes Bild lesen und seine Größe ändern. Siehe den Code unten.
clc
[OI,map] = imread("corn.tif");
[RI,Nmap] = imresize(OI,map,2);
figure
imshow(OI,map)
figure
imshow(RI,Nmap)
Ausgabe:
Das rechte Bild ist das Originalbild in der Ausgabe und das linke Bild ist das skalierte Bild. Wir können auch die Interpolationsmethode ändern, die verwendet wird, um die Größe des Bildes zu ändern. Die Standardmethode ist bikubisch, aber wir können sie in Nearest oder Bilinear ändern, indem wir einen String mit dem Namen der neuen Methode in die Funktion imresize()
eingeben. Bei der Methode der nächsten Interpolation wird dem Ausgabepixel der Wert des Pixels zugewiesen, in das der Punkt fällt. Beim bilinearen Interpolationsverfahren wird dem Ausgabepixel ein Wert zugewiesen, der ein gewichteter Durchschnitt von Pixeln in der nächsten 2-mal-2-Nachbarschaft ist. Beim bikubischen Interpolationsverfahren wird dem Ausgabepixel ein Wert zugewiesen, der ein gewichteter Durchschnitt von Pixeln in der nächsten 4-mal-4-Nachbarschaft ist.