Files
bildverarbeitungss18-hausau…/assignments/04_assignment.ipynb
2018-05-09 12:03:40 +02:00

208 lines
5.5 KiB
Plaintext

{
"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": null,
"metadata": {},
"outputs": [],
"source": [
"# display the plots inside the notebook\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": null,
"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://sipi.usc.edu/database/misc.zip)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Load the pictures here\n",
"sample_images = []\n",
"direc = 'misc/' # directory of the sample pictures realtivly to your notebook\n",
"for number in [1,3,5,6]:\n",
" sample_images.append(\n",
" np.array(Image.open(direc+'4.2.0'+str(number)+'.tiff'))\n",
" )\n",
"for name in ['house', 'ruler.512']:\n",
" sample_images.append(\n",
" np.array(Image.open(direc+name+'.tiff'))\n",
" )"
]
},
{
"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": {},
"outputs": [],
"source": [
"def jpeg_enocde(img, quality):\n",
" pil_img = Image.fromarray(img)\n",
" buffer = BytesIO()\n",
" pil_img.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": [
"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(sample_images):\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": {},
"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
}