Advertisement
stevn

Billedebehandling

May 16th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.12 KB | None | 0 0
  1. prog = readline("Hvilket program vil du køre? (1/2/3/4) \n 1. Gaussisk støj. \n 2. Salt og peber støj.\n 3. gennesnitsudglatning. \n 4. Medianudglatning.")
  2.  
  3. if(prog == 1){
  4. library("EBImage")
  5.  
  6. select_image = readline("Image: ")
  7.  
  8. color = readline("Color? y/n ")
  9.  
  10. obama = readImage(select_image)
  11.  
  12. image_data = as.array(obama)
  13.  
  14. noisy_obama = obama
  15.  
  16. display(obama)
  17.  
  18. deviation = seq(0, 1, 0.1)
  19.  
  20. x_pixels = dim(image_data)[1]
  21. y_pixels = dim(image_data)[2]
  22. if(color == "y")
  23. z_pixels = dim(image_data)[3]
  24. total_pixels = x_pixels*y_pixels
  25. for(i in 1:length(deviation)){
  26. rng = rnorm(total_pixels, mean = 0, sd = deviation[i])
  27.  
  28. for(k in 1:y_pixels){
  29. for(j in 1:x_pixels){
  30. if(color == "y"){
  31. image_data[j,k, 1] = image_data[j,k, 1] + rng[j+(k-1)*x_pixels]
  32. image_data[j,k, 2] = image_data[j,k, 2] + rng[j+(k-1)*x_pixels]
  33. image_data[j,k, 3] = image_data[j,k, 3] + rng[j+(k-1)*x_pixels]
  34. }else{
  35. image_data[j,k] = image_data[j,k] + rng[j+(k-1)*x_pixels]
  36. }
  37.  
  38. }
  39. }
  40. if(color == "y"){
  41. imageData(noisy_obama)[1:x_pixels,1:y_pixels, 1:z_pixels] =
  42. image_data[1:x_pixels,1:y_pixels, 1:z_pixels]
  43. }else{
  44. imageData(noisy_obama)[1:x_pixels,1:y_pixels] =
  45. image_data[1:x_pixels,1:y_pixels]
  46. }
  47. print(i)
  48. file_name = paste("Image - gaussisk stoj (std=",deviation[i],").jpeg")
  49. writeImage(noisy_obama, file_name)
  50.  
  51. }
  52.  
  53.  
  54.  
  55. }else if(prog == 2){
  56. library("EBImage")
  57.  
  58. select_image = readline("Image")
  59.  
  60. color = readline("Color? y/n")
  61.  
  62.  
  63. obama = readImage(select_image)
  64.  
  65. image_data = as.array(obama)
  66.  
  67. noisy_obama = obama
  68.  
  69. display(obama)
  70.  
  71.  
  72. x_pixels = dim(image_data)[1]
  73. y_pixels = dim(image_data)[2]
  74. total_pixels = x_pixels*y_pixels
  75.  
  76. rng = runif(total_pixels, 0 , 1)
  77.  
  78. for(i in 1:7){
  79. styrke = 0.05*i
  80. if(color == "n"){
  81. for(k in 1:y_pixels){
  82. for(j in 1:x_pixels){
  83. if(rng[j+(k-1)*x_pixels] < styrke){
  84. image_data[j,k] = 0
  85. }else if(rng[j+(k-1)*x_pixels] > 1-styrke){
  86. image_data[j,k] = 1
  87. }
  88. }
  89. }
  90. }else{
  91. for(k in 1:y_pixels){
  92. for(j in 1:x_pixels){
  93. if(rng[j+(k-1)*x_pixels] < styrke){
  94. image_data[j,k,1] = 0
  95. image_data[j,k,2] = 0
  96. image_data[j,k,3] = 0
  97. }else if(rng[j+(k-1)*x_pixels] > 1-styrke){
  98. image_data[j,k,1] = 1
  99. image_data[j,k,2] = 1
  100. image_data[j,k,3] = 1
  101. }
  102. }
  103. }
  104. }
  105.  
  106. if(color == "n"){
  107. imageData(noisy_obama)[1:x_pixels,1:y_pixels] =
  108. image_data[1:x_pixels,1:y_pixels]
  109. }else{
  110. imageData(noisy_obama)[1:x_pixels,1:y_pixels, 1:3] =
  111. image_data[1:x_pixels,1:y_pixels, 1:3]
  112. }
  113. print(i)
  114. file_name = paste("Billede - salt (std=",styrke,").jpeg")
  115. writeImage(noisy_obama, file_name)
  116. }
  117.  
  118.  
  119.  
  120. display(noisy_obama)
  121. }else if(prog == 3){
  122. library("EBImage")
  123.  
  124. color = readline("Color? y/n")
  125.  
  126. select_image = readline("Image: ")
  127.  
  128. radius = readline("Hvor lang skal en kernel være?")
  129.  
  130. radius = as.double(radius)
  131.  
  132. radius = (radius-1)/2
  133.  
  134. obama = readImage(select_image)
  135.  
  136. image_data = as.array(obama)
  137.  
  138. noisy_obama = obama
  139.  
  140. display(obama)
  141.  
  142. deviation = seq(0, 1, 0.1)
  143.  
  144. x_pixels = dim(image_data)[1]
  145. y_pixels = dim(image_data)[2]
  146.  
  147.  
  148. for(k in 1:y_pixels){
  149. for(j in 1:x_pixels){
  150. if(color == "n"){
  151. kernel = 0
  152. n = 0
  153. for(t in 1:(1+2*radius)){
  154. for(y in 1:(1+2*radius)){
  155. if(k - radius+t > 0 & j - radius+y > 0 & k - radius+t <= y_pixels & j - radius+y <= x_pixels){
  156. n = n+1
  157. kernel[n] = image_data[j-radius+y,k-radius+t]
  158. }
  159. }
  160. }
  161. kernel = mean(kernel)
  162. image_data[j,k] = kernel
  163. }else{
  164. kernel1= 0
  165. kernel2= 0
  166. kernel3= 0
  167. n = 0
  168. for(t in 1:(1+2*radius)){
  169. for(y in 1:(1+2*radius)){
  170. if(k - radius+t > 0 & j - radius+y > 0 & k - radius+t <= y_pixels & j - radius+y <= x_pixels){
  171. n = n+1
  172. kernel1[n] = image_data[j-radius+y,k-radius+t,1]
  173. kernel2[n] = image_data[j-radius+y,k-radius+t,2]
  174. kernel3[n] = image_data[j-radius+y,k-radius+t,3]
  175. }
  176. }
  177. }
  178. kernel1 = mean(kernel1)
  179. kernel2 = mean(kernel2)
  180. kernel3 = mean(kernel3)
  181. image_data[j,k,1] = kernel1
  182. image_data[j,k,2] = kernel2
  183. image_data[j,k,3] = kernel3
  184. }
  185.  
  186. }
  187. }
  188. if(color == "n"){
  189. imageData(noisy_obama)[1:x_pixels,1:y_pixels] =
  190. image_data[1:x_pixels,1:y_pixels]
  191. }else{
  192. imageData(noisy_obama)[1:x_pixels,1:y_pixels, 1:3] =
  193. image_data[1:x_pixels,1:y_pixels, 1:3]
  194. }
  195. print("done")
  196. file_name = paste("Udglatgennemsnit.jpeg")
  197. writeImage(noisy_obama, file_name)
  198.  
  199.  
  200.  
  201.  
  202.  
  203. }else if(prog == 4){
  204. library("EBImage")
  205.  
  206. color = readline("Color? y/n")
  207.  
  208. select_image = readline("Image: ")
  209.  
  210. radius = readline("Hvor lang skal en kernel være?")
  211.  
  212. radius = as.double(radius)
  213.  
  214. radius = (radius-1)/2
  215.  
  216. obama = readImage(select_image)
  217.  
  218. image_data = as.array(obama)
  219.  
  220. noisy_obama = obama
  221.  
  222. display(obama)
  223.  
  224. deviation = seq(0, 1, 0.1)
  225.  
  226. x_pixels = dim(image_data)[1]
  227. y_pixels = dim(image_data)[2]
  228.  
  229.  
  230. for(k in 1:y_pixels){
  231. for(j in 1:x_pixels){
  232. if(color == "n"){
  233. kernel = 0
  234. n = 0
  235. for(t in 1:(1+2*radius)){
  236. for(y in 1:(1+2*radius)){
  237. if(k - radius+t > 0 & j - radius+y > 0 & k - radius+t <= y_pixels & j - radius+y <= x_pixels){
  238. n = n+1
  239. kernel[n] = image_data[j-radius+y,k-radius+t]
  240. }
  241. }
  242. }
  243. kernel = median(kernel)
  244. image_data[j,k] = kernel
  245. }else{
  246. kernel1= 0
  247. kernel2= 0
  248. kernel3= 0
  249. n = 0
  250. for(t in 1:(1+2*radius)){
  251. for(y in 1:(1+2*radius)){
  252. if(k - radius+t > 0 & j - radius+y > 0 & k - radius+t <= y_pixels & j - radius+y <= x_pixels){
  253. n = n+1
  254. kernel1[n] = image_data[j-radius+y,k-radius+t,1]
  255. kernel2[n] = image_data[j-radius+y,k-radius+t,2]
  256. kernel3[n] = image_data[j-radius+y,k-radius+t,3]
  257. }
  258. }
  259. }
  260. kernel1 = median(kernel1)
  261. kernel2 = median(kernel2)
  262. kernel3 = median(kernel3)
  263. image_data[j,k,1] = kernel1
  264. image_data[j,k,2] = kernel2
  265. image_data[j,k,3] = kernel3
  266. }
  267.  
  268. }
  269. }
  270. if(color == "n"){
  271. imageData(noisy_obama)[1:x_pixels,1:y_pixels] =
  272. image_data[1:x_pixels,1:y_pixels]
  273. }else{
  274. imageData(noisy_obama)[1:x_pixels,1:y_pixels, 1:3] =
  275. image_data[1:x_pixels,1:y_pixels, 1:3]
  276. }
  277. print("done")
  278. file_name = paste("Udglatmedian.jpeg")
  279. writeImage(noisy_obama, file_name)
  280.  
  281.  
  282.  
  283.  
  284.  
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement