Machine Learning Kurs im Rahmen der Studierendentage im SS 2023
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
112 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "Exercise 1b: Read a binary file which contains pixel data and apply\n",
  8. "transformations"
  9. ]
  10. },
  11. {
  12. "cell_type": "code",
  13. "execution_count": 1,
  14. "metadata": {},
  15. "outputs": [],
  16. "source": [
  17. "import numpy as np\n",
  18. "import matplotlib.pyplot as plt"
  19. ]
  20. },
  21. {
  22. "cell_type": "code",
  23. "execution_count": 2,
  24. "metadata": {},
  25. "outputs": [
  26. {
  27. "name": "stdout",
  28. "output_type": "stream",
  29. "text": [
  30. "(2, 59520)\n"
  31. ]
  32. }
  33. ],
  34. "source": [
  35. "# load figure as 2D array \n",
  36. "data = np.load('horse.npy')\n",
  37. "print(data.shape)"
  38. ]
  39. },
  40. {
  41. "cell_type": "code",
  42. "execution_count": 3,
  43. "metadata": {},
  44. "outputs": [],
  45. "source": [
  46. "# just scale the data by a factor and shift by trans\n",
  47. "trans = np.ones(data.shape)\n",
  48. "trans[0,:] *=0.6\n",
  49. "trans[1,:] *=0.4\n",
  50. "factor = 0.5 \n",
  51. "data_scale = data * factor + trans"
  52. ]
  53. },
  54. {
  55. "cell_type": "code",
  56. "execution_count": 4,
  57. "metadata": {},
  58. "outputs": [],
  59. "source": [
  60. "#compression in x and y \n",
  61. "sx = 0.4\n",
  62. "sy = 0.9\n",
  63. "t = np.array([[sx,0],[0,sy]])\n",
  64. "data_comp = t@data"
  65. ]
  66. },
  67. {
  68. "cell_type": "code",
  69. "execution_count": 5,
  70. "metadata": {},
  71. "outputs": [],
  72. "source": [
  73. "#rotation by an angle theta\n",
  74. "theta = 0.5\n",
  75. "data_rot = np.array([[np.cos(theta),-np.sin(theta)],[np.sin(theta), np.cos(theta)]])@data"
  76. ]
  77. },
  78. {
  79. "cell_type": "code",
  80. "execution_count": 6,
  81. "metadata": {},
  82. "outputs": [],
  83. "source": [
  84. "#spiegelung an der x Achse\n",
  85. "tx = np.array([[1,0],[0,-1]]) # mirror x axis\n",
  86. "ty = np.array([[-1,0],[0,1]]) # mirror y axis\n",
  87. "tp = np.array([[-1,0],[0,-1]]) # mirror (0,0)\n",
  88. "data_mirror = tp@data"
  89. ]
  90. },
  91. {
  92. "cell_type": "code",
  93. "execution_count": 7,
  94. "metadata": {},
  95. "outputs": [
  96. {
  97. "data": {
  98. "text/plain": [
  99. "(-1.2, 1.2, -1.2, 1.2)"
  100. ]
  101. },
  102. "execution_count": 7,
  103. "metadata": {},
  104. "output_type": "execute_result"
  105. },
  106. {
  107. "data": {
  108. "image/png": "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
  109. "text/plain": [
  110. "<Figure size 1000x1000 with 4 Axes>"
  111. ]
  112. },
  113. "metadata": {},
  114. "output_type": "display_data"
  115. }
  116. ],
  117. "source": [
  118. "# create figure for the transformations\n",
  119. "plt.figure(figsize=(10.0,10.0),dpi=100,facecolor='lightgrey')\n",
  120. "plt.suptitle('Plot Transformations')\n",
  121. "plt.subplot(2,2,1)\n",
  122. "plt.title('original picture')\n",
  123. "plt.plot(data[0,:],data[1,:],'.')\n",
  124. "plt.axis([-1.2,1.2,-1.2,1.2])\n",
  125. "plt.subplot(2,2,2)\n",
  126. "plt.title('scaling and translation')\n",
  127. "plt.plot(data_scale[0,:],data_scale[1,:],'.')\n",
  128. "plt.axis([-1.2,1.2,-1.2,1.2])\n",
  129. "plt.subplot(2,2,3)\n",
  130. "plt.title('compression')\n",
  131. "plt.plot(data_comp[0,:],data_comp[1,:],'.')\n",
  132. "plt.axis([-1.2,1.2,-1.2,1.2])\n",
  133. "plt.subplot(2,2,4)\n",
  134. "plt.title('rotation and mirror at p(0,0)')\n",
  135. "plt.plot(data_rot[0,:],data_rot[1,:],'.')\n",
  136. "plt.plot(data_mirror[0,:],data_mirror[1,:],'.')\n",
  137. "plt.axis([-1.2,1.2,-1.2,1.2])"
  138. ]
  139. }
  140. ],
  141. "metadata": {
  142. "kernelspec": {
  143. "display_name": "Python 3 (ipykernel)",
  144. "language": "python",
  145. "name": "python3"
  146. },
  147. "language_info": {
  148. "codemirror_mode": {
  149. "name": "ipython",
  150. "version": 3
  151. },
  152. "file_extension": ".py",
  153. "mimetype": "text/x-python",
  154. "name": "python",
  155. "nbconvert_exporter": "python",
  156. "pygments_lexer": "ipython3",
  157. "version": "3.8.16"
  158. }
  159. },
  160. "nbformat": 4,
  161. "nbformat_minor": 4
  162. }