{ "cells": [ { "cell_type": "markdown", "id": "c36cf7d5-c332-4482-af0e-3ba30ea9bb8e", "metadata": {}, "source": [ "Uwaga: Należy rozwiązać oba poniższe zadania. Na zaliczenie potrzeba co najmniej 3 pkt. \n", "
\n", "\n", "1. Zadanie 1.(2x1.5 pkt): Zreplikować wyniki związane z materiałem na stronie 2d fourier transform in python and fourier synthesis of images. Istotą tego zadania jest poprawne zrozumienie działania transformaty Fouriera na obrazach - jego zaliczenie będzie polegało na odpowiedzi na dwa pytania teoretyczne.\n", "\n", "2. Zadanie 2.(2x1 pkt): Napisać kod dwóch filtrów opartych o transformatę Fouriera: dolno i górnoprzepustowego. W pierwszym przypadku przykładowy obraz dobrej jakości zaburzyć kolejno trzema różnymi szumami dostępnyhmi w programie Gimp. W każdym przypadku zastosować filtr dolnoprzepustowy możliwie dokładnie przywracający obraz przed zaszumieniem. Następnie wygenerować filtr górnoprzepustowy wizualizujący w trzech powyższych przypadkach postać dodanego szumu. Materiał referencyjny znajduje się m.in. na stronie\n", "Low and High pass filtering experiments.html. " ] }, { "cell_type": "markdown", "id": "03b53c2c", "metadata": {}, "source": [ "## Zadanie 1" ] }, { "cell_type": "code", "execution_count": 17, "id": "9cd51714", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAClCAYAAADBAf6NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5MklEQVR4nO1dSXNkV9W8rcEaS7OHIBzYH4NxgA3G9pIdv4C/w54FWzZs+BEs2PIP7PYUGCKw8cI2BqyhVF0aWt2WvgWcclbq3PvOfVV66lZlRnSEhCTfeu/dSk7lOZn33tXV1VUSBEEQBGFmMXfbL0AQBEEQhNuFigFBEARBmHGoGBAEQRCEGYeKAUEQBEGYcagYEARBEIQZh4oBQRAEQZhxqBgQBEEQhBmHigFBEARBmHEsRH/x+9//fvrqq6/S+fl56vV66eWXX04/+clP0ttvv53eeOON9Morr6Tnn38+zc3NpaOjo/TJJ5+kDz/8ML377rvpgw8+SJ9++mk6PDxM8/Pz6bnnnkuvvPJKeuONN9Lbb7+dXn/99fTSSy+lXq+Xzs/P0z//+c/08ccfp/v376f79++njz/+OH355Zfp/Pw8ra+vp5deeim99tpr6a233ko///nP049+9KP03HPPpYWFhXR0dJQ+/fTT0drvv//+aO25ubn07LPPjtZ+66230uuvv55efvnltLGxkR4+fDha+/3330/vvvtu+vjjj9MXX3yRzs7O0traWvrud797be0XXnghLSwspH6/n/7xj3+kDz/8ML3zzjvpww8/TJ988kna399P9+7dS88++2z64Q9/OLb2//3f/6WNjY306NGj9NVXX6W//vWv6b333kv3799Pf/nLX9Lnn3+eTk9P09raWnrxxRfTa6+9lt5888305ptvpldffTW98MILaXFxMR0fH6fPPvts7Lpt7ZRS2t3dvbb29773vbS5uZkePXqU/vWvf6W//e1vo7U/+uij9MUXX6STk5O0urqaXnzxxfTjH/84vfnmm+mtt95Kr776avrOd76TFhcX02AwSJ999ln66KOP0v3799N7772X/v73v6evv/46XV1dpd3d3fSDH/wg/fSnP02///3vb2wz53Dv3r3O18ytPT8/P/p6bm68Fn/8+PHY95gHdpeywUr3JKXxa728vMz+rGvcxtriXfFuV7wbVgZOTk7So0eP0vz8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", "text/plain": [ "