Advertisement
Guest User

Demozajkowanie

a guest
Jun 18th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. clear all;
  2. close all;
  3.  
  4. % Read in original RGB image.
  5.  
  6. rgbImage = imread('strus.bmp');
  7.  
  8. % Extract color channels.
  9.  
  10. redChannel = rgbImage(:,:,1); % Red channel
  11. [m,n] = size(redChannel);
  12.  
  13. redBadtmp = zeros(m,n,'uint8');
  14.  
  15. for i = 1 : m
  16. for j = 1 : n
  17. if mod(i,2) == 1
  18. redBadtmp(i,j) = redChannel(i,j);
  19. end
  20.  
  21. end
  22.  
  23. end
  24.  
  25. redBad = zeros(m,n,'uint8');
  26.  
  27. for i = 1 : m
  28. for j = 1 : n
  29. if mod(j,2) == 0
  30. redBad(i,j) = redBadtmp(i,j);
  31. end
  32. end
  33. end
  34.  
  35. redInter = redBad;
  36.  
  37. for i = 1 : m
  38. for j = 1 : n
  39. if mod(j,2) == 1
  40. if (j == 1)
  41. redInter(i,j) = redBad(i,j+1);
  42. else
  43. if (j == n)
  44. redInter(i,j) = redBad(i,j-1);
  45. else
  46. redInter(i,j) = ceil(redBad(i,j+1) / 2) + ceil(redBad(i,j-1) / 2);
  47. end
  48. end
  49. end
  50. end
  51. end
  52.  
  53.  
  54. for i = 1 : m
  55. for j = 1 : n
  56. if mod(i,2) == 0
  57. redInter(i,j) = ceil(redInter(i-1,j)/2 + redInter(i+1,j)/ 2);
  58. end
  59. end
  60. end
  61. %redChannel1 = interp2(redChannel);
  62.  
  63. %imshow(redChannel);
  64.  
  65. greenChannel = rgbImage(:,:,2); % Green channel
  66.  
  67. greenBad = zeros(m,n,'uint8');
  68.  
  69. for i = 1 : m
  70. for j = 1 : n
  71. if mod(j,2) == 0
  72. if mod(i,2) == 0
  73. greenBad(i,j) = greenChannel(i,j);
  74. end
  75. else
  76. if mod(i,2) == 1
  77. greenBad(i,j) = greenChannel(i,j);
  78. end
  79. end
  80. end
  81. end
  82.  
  83. greenInter = greenBad;
  84.  
  85. for i = 1 : m
  86. for j = 1 : n
  87. if mod(j,2) == 0
  88. greenInter(i,j) = ceil(greenBad(i,j+1) / 2) + ceil(greenBad(i,j-1) / 2);
  89. end
  90. end
  91. end
  92.  
  93.  
  94. for i = 1 : m
  95. for j = 1 : n
  96. if (mod(i,2) == 0 && i ~= 1 && i ~=m)
  97. greenInter(i,j) = ceil(greenInter(i-1,j)/2 + greenInter(i+1,j)/ 2);
  98. end
  99. end
  100. end
  101. %greenChannel1 = interp2(greenChannel);
  102.  
  103. blueChannel = rgbImage(:,:,3); % Blue channel
  104. blueBadtmp = zeros(m,n,'uint8');
  105.  
  106. for i = 1 : m
  107. for j = 1 : n
  108. if mod(i,2) == 0
  109. blueBadtmp(i,j) = blueChannel(i,j);
  110. end
  111. end
  112. end
  113.  
  114. blueBad = zeros(m,n,'uint8');
  115.  
  116. for i = 1 : m
  117. for j = 1 : n
  118. if mod(j,2) == 1
  119. blueBad(i,j) = blueBadtmp(i,j);
  120. end
  121. end
  122. end
  123.  
  124. blueInter = blueBad;
  125.  
  126. for i = 1 : m
  127. for j = 1 : n
  128. if (i == 1)
  129. blueInter(i,j) = blueInter(i+1,j);
  130. else
  131. if(i == m)
  132. blueInter(i,j) = blueInter(i-1,j);
  133. end
  134. end
  135. end
  136. end
  137.  
  138. for i = 1 : m
  139. for j = 1 : n
  140. if mod(j,2) == 0
  141. blueInter(i,j) = ceil(blueBad(i,j+1) / 2) + ceil(blueBad(i,j-1) / 2);
  142. end
  143. end
  144. end
  145.  
  146.  
  147. for i = 1 : m
  148. for j = 1 : n
  149. if (mod(i,2) == 1 && i ~= 1 && i ~=m)
  150. blueInter(i,j) = ceil(blueInter(i-1,j)/2 + blueInter(i+1,j)/ 2);
  151. end
  152. end
  153. end
  154.  
  155. %blueChannel1 = interp2(blueChannel);
  156.  
  157. % Create an all black channel.
  158.  
  159. allBlack = zeros(size(rgbImage, 1), size(rgbImage, 2), 'uint8');
  160.  
  161. %Interpolacja
  162.  
  163. %R
  164.  
  165. blueChannel1 = interp2(double(redBad));
  166.  
  167. % Create color versions of the individual color channels.
  168.  
  169. just_red = cat(3, redInter, allBlack, allBlack);
  170.  
  171. just_green = cat(3, allBlack, greenInter, allBlack);
  172.  
  173. just_blue = cat(3, allBlack, allBlack, blueInter);
  174.  
  175. % Recombine the individual color channels to create the original RGB image again.
  176.  
  177. recombinedRGBImage = cat(3, redInter, greenInter, blueInter);
  178.  
  179. % Display them all.
  180.  
  181. figure(3)
  182.  
  183. subplot(3, 3, 2);
  184.  
  185. imshow(rgbImage);
  186.  
  187. fontSize = 20;
  188.  
  189. title('Original RGB Image', 'FontSize', fontSize)
  190.  
  191. subplot(3, 3, 4);
  192.  
  193. imshow(just_red);
  194.  
  195. title('Red Channel in Red', 'FontSize', fontSize)
  196.  
  197. subplot(3, 3, 5);
  198.  
  199. imshow(just_green)
  200.  
  201. title('Green Channel in Green', 'FontSize', fontSize)
  202.  
  203. subplot(3, 3, 6);
  204.  
  205. imshow(just_blue);
  206.  
  207. title('Blue Channel in Blue', 'FontSize', fontSize)
  208.  
  209. subplot(3, 3, 8);
  210.  
  211. imshow(recombinedRGBImage);
  212.  
  213. title('Recombined to Form Original RGB Image Again', 'FontSize', fontSize)
  214.  
  215. % Set up figure properties:
  216.  
  217. % Enlarge figure to full screen.
  218.  
  219. set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0, 1, 1]);
  220.  
  221. % Get rid of tool bar and pulldown menus that are along top of figure.
  222.  
  223. % set(gcf, 'Toolbar', 'none', 'Menu', 'none');
  224.  
  225. % Give a name to the title bar.
  226.  
  227. set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
  228.  
  229. figure()
  230. imshow(rgbImage);
  231. figure()
  232. imshow(recombinedRGBImage);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement