Skip to content
Snippets Groups Projects
Commit a3e8944f authored by Tamino Huxohl's avatar Tamino Huxohl
Browse files

change excercise introduction method

parent 7618944e
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Aufgabe
1. Lesen Sie die Bilder "Jahrmarkt.jpg" und "Windrad.jpg" ein uns visualisieren Sie diese
2. Berechnen Sie die zugehörigen Histogramme und stellen Sie diese graphisch dar
Implementieren Sie die dafür mit `#TODO` gekennzeichneten Codestellen und beachten Sie die Hinweise unten.
Implementieren Sie die dafür mit `#TODO` gekennzeichneten Codestellen und beachten Sie ggf. die Hinweise unten.
%% Cell type:code id: tags:
``` python
import os
import cv2 as cv
import numpy as np
%matplotlib inline
from matplotlib import pyplot as plt
img_directory = '../resources'
file_jahrmarkt = os.path.join(img_directory, 'Jahrmarkt.jpg')
file_windrad = os.path.join(img_directory, 'Windrad.jpg')
#TODO: laden Sie die Bilder und stellen Sie sie dar
```
%% Cell type:code id: tags:
``` python
#TODO: berechnen Sie für jedes Bild ein Histogramm der Pixelintensitäten und stellen Sie diese dar
```
%% Cell type:markdown id: tags:
### Hinweise
* Für Tipps zum laden und darstellen von Bildern schauen Sie sich das Jupyter Notebook examples/02_images.ipynb an
* Zum Darstellen der Histogramme eignen sich die Funktionen [hist](https://matplotlib.org/3.2.1/api/_as_gen/matplotlib.pyplot.hist.html) oder [bar](https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.bar.html) von `matplotlib`
* Iteriere über alle Pixelintensitäten:
```
height, width, channels = img.shape
for i in range(height):
for j in range(width):
for k in range(channels):
p_ijk = img[i, j, k]
```
......
%% Cell type:markdown id: tags:
# Aufgabe
Erzeugen und Visualisieren Sie die folgenden synthetischen Bilder der Größe 256x256:
1. Schachbrettmuster
2. Dreiecksmatrixmuster
3. Pfefferrauschen (zufälig verteilte weiße Pixel)
4. Kreis
Implementieren Sie die dafür mit `#TODO` gekennzeichneten Codestellen.
Implementieren Sie die dafür mit `#TODO` gekennzeichneten Codestellen und beachten Sie ggf. die Hinweise unten.
%% Cell type:code id: tags:
``` python
%matplotlib inline
from matplotlib import pyplot as plt
import cv2 as cv
import numpy as np
def checkerboard(img):
# TODO
return img
def triangle(img):
# TODO
return img
def pepper_noise(img):
# TODO
return img
def circle(img):
# TODO
return img
def create_empty_img():
return np.zeros((256, 256), dtype=np.uint8)
checkerboard_img = checkerboard(create_empty_img())
triangle_img = triangle(create_empty_img())
pepper_noise_img = pepper_noise(create_empty_img())
circle_img = circle(create_empty_img())
fig, axs = plt.subplots(2, 2)
fig.tight_layout(h_pad=4)
axs[0, 0].imshow(checkerboard_img, cmap='gray')
axs[0, 0].set_title('Checkerboard')
axs[0, 1].imshow(triangle_img, cmap='gray')
axs[0, 1].set_title('Triangle')
axs[1, 0].imshow(pepper_noise_img, cmap='gray')
axs[1, 0].set_title('Pepper Noise')
axs[1, 1].imshow(circle_img, cmap='gray')
_ = axs[1, 1].set_title('Circle')
```
%% Output
%% Cell type:markdown id: tags:
### Hinweise
* Setzte den Pixel $P_{i, j}$ (i-te Zeile, j-te Spalte) auf weiß:
```
img[i, j] = 255
```
* Iteriere über alle Pixel:
```
height, width = img.shape
for i in range(height):
for j in range(width):
img[i, j] = ...
```
* Iteriere über alle Pixel und setze alle Pixel auf der Diagonalen auf weiß:
```
height, width = img.shape
for i in range(height):
for j in range(width):
if i == j:
img[i, j] = 255
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment