Slajdy są tutaj ONA6-kompresja
Zadania na dziś:
1. Zapoznaj się z modułem gzip zapisz plik tekstowy w pliku skompresowanym ze skryptu pythona, zdekompresuj go przy pomocy programu gunzip i odwrotnie
2. Weźmy takie pomocnicze funkcje w pythonie opisujące dyskretną transformatę kosinusową:
import urllib2,io import Image from scipy import fftpack image_url='http://i.imgur.com/8vuLtqi.png' def get_image_from_url(image_url='http://i.imgur.com/8vuLtqi.png', size=(128, 128)): file_descriptor = urllib2.urlopen(image_url) image_file = io.BytesIO(file_descriptor.read()) image = Image.open(image_file) img_color = image.resize(size, 1) img_grey = img_color.convert('L') img = np.array(img_grey, dtype=np.float) return img def get_2D_dct(img): """ Get 2D Cosine Transform of Image """ return fftpack.dct(fftpack.dct(img.T, norm='ortho').T, norm='ortho') def get_2d_idct(coefficients): """ Get 2D Inverse Cosine Transform of Image """ return fftpack.idct(fftpack.idct(coefficients.T, norm='ortho').T, norm='ortho') def get_reconstructed_image(raw): img = raw.clip(0, 255) img = img.astype('uint8') img = Image.fromarray(img) return img
wykonaj program, który dokonuje Ntego przybliżenia obrazu, przy pomocy zerowania wartośći powyżej Ntego wiersza i Ntej kolumny macierzy get_2D_dct(img) i wyświetl kilkanaście pierwszych przybliżeń.
3. Wyrysuj wykres Entropii dla kanału binarnego w zależności od P(1)
4. Napisz program, który dla zadanego pliku tekstowego tworzy tablicę częstotliwości znaków, kody Huffmana dla wszystkich znaków oraz wylicza entropię tego pliku i długość kodu Huffmana, który opisywałby cały plik