added 4 assignment

This commit is contained in:
Jakob Krause
2018-05-09 10:49:26 +02:00
parent 1fc8c4bf0f
commit fcd436d3b6

View File

@@ -0,0 +1,211 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Image Processing SS 18 - Assignment - 04\n",
"\n",
"### Deadline is 16.5.2016 at 8:00 o'clock\n",
"\n",
"Please solve the assignments together with a partner.\n",
"I will run every notebook. Make sure the code runs through. Select `Kernel` -> `Restart & Run All` to test it.\n",
"Please strip the output from the cells, either select `Cell` -> `All Output` -> `Clear` or use the `nb_strip_output.py` script / git hook."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# display the plots inside the notebook\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import pylab\n",
"try:\n",
" import urllib.request as urllib2\n",
"except ImportError:\n",
" import urllib2\n",
"\n",
"import random\n",
"try:\n",
" from StringIO import StringIO as BytesIO\n",
"except ImportError:\n",
" from io import BytesIO\n",
" \n",
"from PIL import Image\n",
"\n",
"pylab.rcParams['figure.figsize'] = (12, 12) # This makes the plot bigger"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise 1 - Qualify sharpness and noise - 5 Points\n",
"\n",
"Qualify the noise and sharpness in the images. Make a plot images, noise\n",
"\n",
"Please download sample picture from [here](http://www.imageprocessingplace.com/downloads_V3/root_downloads/image_databases/standard_test_images.zip)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Load the pictures here\n",
"sample_images = None"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def qualify_noise(img):\n",
" \"\"\"Qualify the noise based on the std of a gaussian model.\n",
" You may find a window that is contant in the images.\n",
" \"\"\"\n",
" # your code here\n",
" return random.randint(0, 10)\n",
"\n",
"plt.bar(range(len(sample_images)), [qualify_noise(i) for i in sample_images])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def qualify_sharpness(img):\n",
" \"\"\"Qualify the sharpness based on the average pixel differences.\"\"\"\n",
" # your code here\n",
" return random.randint(0, 10)\n",
"plt.bar(range(len(sample_images)), [qualify_sharpness(i) for i in sample_images])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Does the result match the expectations? If not what processing step can be done?/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise 2 - SSIM JPEG Compression - 5 Points"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def jpeg_enocde(img, quality):\n",
" pil_img = Image.fromarray(img)\n",
" buffer = BytesIO()\n",
" im1.save(buffer, \"JPEG\", quality=quality)\n",
" return buffer\n",
"\n",
"def jpeg_decode(buffer):\n",
" img = Image.open(buffer)\n",
" return np.array(img)\n",
"\n",
"def jpeg_quality_filter(img, quality):\n",
" as_jpeg = jpeg_enocde(img, quality)\n",
" return jpeg_decode(as_jpeg)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"len(images_for_jpeg)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"images10 = [jpeg_quality_filter(img, 10) for img in sample_images]\n",
"images50 = [jpeg_quality_filter(img, 10) for img in sample_images]\n",
"images80 = [jpeg_quality_filter(img, 10) for img in sample_images]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def ssim(img, filtered_img):\n",
" \"\"\"The SSIM similarity measure. Use the parameters from the paper \n",
" as on the second to last slide from the lecture\"\"\"\n",
" # your code\n",
" return random.randint(0, 10)\n",
"\n",
"for i, img in enumerate(images_for_jpeg):\n",
" print(i)\n",
" compressed_images = [images10[i], images50[i], images80[i]]\n",
" plt.bar(range(len(compressed_images)),\n",
" [ssim(img, comp) for comp in compressed_images])\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}