Wiemy, że OpenCV jest szeroko stosowany do pracy z obrazami i ma do tego szeroki zakres funkcji. Ale co, jeśli chcemy przetwarzać pliki obrazów bez korzystania z zewnętrznej biblioteki, takiej jak OpenCV. Zobaczmy, jak możemy to zrobić.
Skalowanie obrazu (przy użyciu interpolacji najbliższego sąsiada):
Interpolacja najbliższego sąsiada — jest to najłatwiejszy sposób interpolacji. Ta metoda po prostu określa „najbliższy” sąsiedni piksel i przyjmuje wartość jego intensywności.
Rozważ mały obrazek o szerokości w i wysokości — h chcemy zmienić szerokość z p na szerokość q, zakładając, że p>gt; miq > n. Teraz potrzebujemy dwóch stałych skalowania:
scale_x = p / w scale_y = q / h
Teraz po prostu iterujemy po wszystkich pikselach w obrazie wyjściowym, odnosząc się do oryginalnych pikseli, które kopiujesz z. skalowanie naszych zmiennych kontrolnych za pomocą scale_x i scale_y oraz zaokrąglanie wynikowych skalowanych wartości indeksu.
Reprezentacja wizualna:
Obraz ma 3X3 piksele (łącznie 9 pikseli), teraz jeśli chcemy zwiększyć rozmiar obrazu do 6X6, to zgodnie z najbliższym algorytmem sąsiednim 6/3 (czyli 2) piksele powinny mieć taką samą wartość RGB jak wartość piksela do oryginalnego obrazu.
Program do skalowania obrazów:
Wyjście: Skala szarości obrazu:Korzystanie ze średniej metoda wartości, ta metoda podkreśla intensywność piksela, zamiast pokazywać, z czego składa się wartość RGB. Kiedy obliczymy średnią wartość RGB i przypiszemy jej wartość RGB do piksela, ponieważ wartość RGB piksela jest taka sama, nie będzie w stanie stworzyć żadnego koloru, ponieważ wszystkie kolory są generowane ze względu na inny stosunek RGB wartości, ponieważ w tym przypadku stosunek wynosiłby 1:1:1. Dlatego renderowany obraz będzie wyglądał jak szary obraz. Reprezentacja wizualna: ![]() Program do obsługi obrazów w skali szarości:
|
Wyjście:
Przycinanie obrazu:
Przycinanie zasadniczo usuwa niechciany piksel. Można to zrobić, umieszczając wymagany piksel w innej siatce obrazów, której rozmiar odpowiada wymaganym po przycięciu.
Rozważ obraz o rozmiarze 10 √ 10 pikseli i jeśli chcemy wykadrować tylko środek obrazu o rozmiarze 4 × 4 piksele, następnie musimy zebrać wartości pikseli ‚od (10-4) / 2, zaczynając od (3, 3) do 4 pikseli w kierunku x i 4 piksele w kierunku y.
Reprezentacja wizualna:
Przycinanie obrazu:
# using matplotlib i numpy
import
matplotlib.image jako img
import
numpy as npy
# odczyt obrazu w zmiennej m
m
=
img.imread (
"taj.png"
)
# definicja rozmiaru obrazu szerokość (w) wysokość (h)
w, h
=
m.shape [:
2
]
# wymagany rozmiar obrazu po przycięciu
xNew
=
int
(w
*
1
/
4
)
yNew
=
int
(h
*
1
/
4
)
newImage
=
npy.zeros ([xNew, yNew,
4
])
# szerokość wydruku wysokość obrazu źródłowego
print
(w)
print
(h)
for
i
in
range
(
1
, xNew):
for
j
w
zakres
(
1
, yNew):
# przytnij od 100 do 100 pikseli oryginalnego obrazu
newImage [i, j]
=
m [
100
+
i,
100
+
j]
# zapisz obraz
img.imsave (
`cropped.png`
, newImage)
Wyjście: