Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Przetwarzanie obrazów

Podobne prezentacje


Prezentacja na temat: "Przetwarzanie obrazów"— Zapis prezentacji:

1 Przetwarzanie obrazów
Wykład 2 Operacje obrazach w Pythonie Literatura: Jakub Swacha – kurs Pythona Marcin Młotkowski – kurs języka Python Python documentation Opracował: dr inż. Wojciech Bieniecki Instytut nauk ekonomicznych i informatyki PWSZ PŁOCK

2 PIL Python Imaging Library to obecnie jedyny zaawansowany i stabilny moduł do obróbki grafiki dla Pythona. Za jego pomocą można zrobić praktycznie wszystko – od miniaturek, po nakładanie filtrów, obracanie, przycinanie grafik. Bibilioteka umożliwia szybki dostęp do pojedynczych pikseli pliku graficznego

3 Zastosowania PIL Archiwizacja obrazów
Biblioteka nadaje się do wsadowego przetwarzania obrazów dla celów archiwizacyjnych. Daje możliwość tworzenia miniaturek, konwersji pomiędzy formatami i wydruku obrazów. Wyświetlanie obrazów Umożliwia wyświetlanie obrazów w aplikacjach PythonWin. (Windows DIB Interface), obsługuje interfejsy dla aplikacji Tk Przetwarzanie - Operacje punktowe Operacje lokalnego sąsiedztwa (filtrowanie) Konwersja przestrzeni barw Transformacje geometryczne Wykorzystanie histogramu

4 Użycie klasy Image >>> import Image
>>> im = Image.open("lena.jpg") >>> print im.format, im.size, im.mode JPG (512, 512) RGB RGB – obraz barwny L – obraz w odcieniach szarości CMYK – obraz barwny w przestrzeni CMYK >>> im.show() Zapisuje obraz do pliku tymczasowego i używa domyślnej przeglądarki do jego otwarcia. Niezbyt efektywny sposób.

5 Zapisywanie obrazu PIL daje możliwość operowania na wielu formatach plików graficznych. Format jest odgadywany automatycznie przez bibliotekę. W czasie zapisu PIL bierze pod uwagę nazwę pliku (jej roszerzenie). import os, sys import Image for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".jpg" if infile != outfile: try: Image.open(infile).save(outfile) except IOError: print "cannot convert", infile im.save(outfile, "JPEG")

6 Identyfikacja parametrów pliku graficznego
import sys import Image for infile in sys.argv[1:]: try: im = Image.open(infile) print infile, im.format, "%dx%d" % im.size, im.mode except IOError: pass

7 Tworzenie miniaturek import os, sys import Image
for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".th.jpg" if infile != outfile: try: im = Image.open(infile) im.thumbnail((128, 128)) im.save(outfile, "JPEG") except IOError: print "cannot create thumbnail for", infile

8 Operacje na obszarach (left, upper, right, lower).
Wycinanie obszaru z obrazu box = (100, 100, 400, 400) region = im.crop(box) Obrót obszaru i ponowne wklejenie region = region.transpose(Image.ROTATE_180) im.paste(region, box)

9 Przewijanie obrazu part1 part2 def roll(image, delta):
xsize, ysize = image.size delta = delta % xsize if delta == 0: return image part1 = image.crop((0, 0, delta, ysize)) part2 = image.crop((delta, 0, xsize, ysize)) image.paste(part2, (0, 0, xsize-delta, ysize)) image.paste(part1, (xsize-delta, 0, xsize, ysize)) return image part1 part2

10 Filtracja obrazu Operacje lokalnego sąsiedztwa I I’

11 Gotowe filtry w Pythonie
import Image import ImageFilter ImageFilter.BLUR – rozmycie obrazu (poruszenie) DETAIL, SHARPEN – wyostrzenie CONTOUR – filtr gradientowy EDGE_ENHANCE, EDGE_ENHANCE_MORE – poprawienie jakości krawędzi SMOOTH, SMOOTH_MORE – filtr wygładzający

12 Przykład – szum sól i pieprz
import random import Image import ImageFilter import ImageOps im = ImageOps.grayscale(Image.open("lena512.bmp")) im_b=im.copy() im_w=im.copy() arr1=im.load() arr2=im_b.load() arr3=im_w.load() nx= 0.4 nx=nx*im.size[0] * im.size[1] /100 for i in range(int(nx)): x = random.randrange(im.size[0]) y = random.randrange(im.size[1]) arr1[x, y] = random.randrange(2)*255 arr2[x, y]=0 arr3[x, y]=255 im.save("lena_wb.bmp") im_b.save("lena_b.bmp") im_w.save("lena_w.bmp")

13 Przykład – usuwanie szumu
import Image import ImageFilter im1 = Image.open("lena_b.bmp") im2 = Image.open("lena_w.bmp") im3 = Image.open("lena_wb.bmp") im1=im1.filter(ImageFilter.MaxFilter) im1=im1.filter(ImageFilter.MinFilter) im2=im2.filter(ImageFilter.MinFilter) im2=im2.filter(ImageFilter.MaxFilter) im3=im3.filter(ImageFilter.MedianFilter)

14 Przykład - krawędzie grad x: fx grad y: fy

15 Przykład - krawędzie import Image import ImageFilter import ImageOps
import ImageChops im = ImageOps.grayscale(Image.open("lena512.bmp")) k1 =ImageFilter.Kernel(size=(3,3),kernel=[1,0,-1,1,0,-1,1,0,-1],scale=1,offset=128) k2 =ImageFilter.Kernel(size=(3,3),kernel=[1,1,1,0,0,0,-1,-1,-1],scale=1,offset=128) g1 = im.filter(k1) g2 = im.filter(k2) g1=ImageChops.multiply(g1,g1) g2=ImageChops.multiply(g2,g2) g=ImageChops.add(g1,g2)

16 Wyostrzanie 16 sharpen(f ) = f – laplace(f )

17 Przykład - wyostrzenie
import Image import ImageFilter import ImageOps import ImageChops im = ImageOps.grayscale(Image.open("lena512.bmp")) k =ImageFilter.Kernel(size=(3,3),kernel=[0,1,0,1,-4,1,0,1,0],scale=3) g = im.filter(k) im2=ImageChops.subtract(im,g) im.show() im2.show()

18 Wykrywanie krawędzi A B=Gauss(A ) AND THRESHOLD D= (C == 0)

19 Przykład – wykrywanie krawędzi
import Image,ImageMath,ImageFilter import ImageOps A = ImageOps.grayscale(Image.open("lena512.bmp")) B=A.filter(ImageFilter.SMOOTH_MORE) k =ImageFilter.Kernel(size=(3,3),kernel=[0,1,0,1,-4,1,0,1,0]) C=B.filter(k) k1=ImageFilter.Kernel(size=(3,3),kernel=[1,1,1,0,0,0,-1,-1,-1],scale=9) k2=ImageFilter.Kernel(size=(3,3),kernel=[1,1,1,0,0,0,-1,-1,-1],scale=9) E1=B.filter(k1) E2=B.filter(k2) E=ImageMath.eval("(a*a+b*b)^0.5",a=E1,b=E2) D=ImageMath.eval("(c==0)",c=C) F=ImageMath.eval("d * e",d=D,e=E) G=ImageMath.eval("255*(f>50)",f=F)

20 Python i OpenCV OpenCV - biblioteka funkcji wykorzystywanych podczas obróbki obrazu, oparta o otwarty kod i zapoczątkowana przez Intela. Biblioteka ta jest wieloplatformowa. Autorzy jej skupiają się na przetwarzaniu obrazu w czasie rzeczywistym. Biblioteka jest napisana w języku C++ Istnieją „wrappery” umożliwiające użycie funkcji w innych językach .NET (np. C#) Java Python Dokumentacja dla języka Python import cv im = cv.LoadImageM("lena512.jpg") print type(im) cv.SaveImage("lena.png", im)

21 Python i OpenCV Konwersja PIL -> OpenCV Konwersja OpenCV -> PIL
import Image, cv pi = Image.open('lena512.jpg') # PIL image cv_im = cv.CreateImageHeader(pi.size, cv.IPL_DEPTH_8U, 3) cv.SetData(cv_im, pi.tostring()) print pi.size, cv.GetSize(cv_im) print pi.tostring() == cv_im.tostring() Konwersja OpenCV -> PIL import Image, cv cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1) pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring()) print pi.size

22 Zaawansowane zastosowania OpenCV
Wykrywanie twarzy Śledzenie ruchomych obiektów Porównywanie obrazów Steganografia OCR i captcha Wykrywanie krawędzi Segmentacja obiektów Pomiary statystyczne


Pobierz ppt "Przetwarzanie obrazów"

Podobne prezentacje


Reklamy Google