Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- close all;
- % Read in original RGB image.
- rgbImage = imread('strus.bmp');
- % Extract color channels.
- redChannel = rgbImage(:,:,1); % Red channel
- [m,n] = size(redChannel);
- redBadtmp = zeros(m,n,'uint8');
- for i = 1 : m
- for j = 1 : n
- if mod(i,2) == 1
- redBadtmp(i,j) = redChannel(i,j);
- end
- end
- end
- redBad = zeros(m,n,'uint8');
- for i = 1 : m
- for j = 1 : n
- if mod(j,2) == 0
- redBad(i,j) = redBadtmp(i,j);
- end
- end
- end
- redInter = redBad;
- for i = 1 : m
- for j = 1 : n
- if mod(j,2) == 1
- if (j == 1)
- redInter(i,j) = redBad(i,j+1);
- else
- if (j == n)
- redInter(i,j) = redBad(i,j-1);
- else
- redInter(i,j) = ceil(redBad(i,j+1) / 2) + ceil(redBad(i,j-1) / 2);
- end
- end
- end
- end
- end
- for i = 1 : m
- for j = 1 : n
- if mod(i,2) == 0
- redInter(i,j) = ceil(redInter(i-1,j)/2 + redInter(i+1,j)/ 2);
- end
- end
- end
- %redChannel1 = interp2(redChannel);
- %imshow(redChannel);
- greenChannel = rgbImage(:,:,2); % Green channel
- greenBad = zeros(m,n,'uint8');
- for i = 1 : m
- for j = 1 : n
- if mod(j,2) == 0
- if mod(i,2) == 0
- greenBad(i,j) = greenChannel(i,j);
- end
- else
- if mod(i,2) == 1
- greenBad(i,j) = greenChannel(i,j);
- end
- end
- end
- end
- greenInter = greenBad;
- for i = 1 : m
- for j = 1 : n
- if mod(j,2) == 0
- greenInter(i,j) = ceil(greenBad(i,j+1) / 2) + ceil(greenBad(i,j-1) / 2);
- end
- end
- end
- for i = 1 : m
- for j = 1 : n
- if (mod(i,2) == 0 && i ~= 1 && i ~=m)
- greenInter(i,j) = ceil(greenInter(i-1,j)/2 + greenInter(i+1,j)/ 2);
- end
- end
- end
- %greenChannel1 = interp2(greenChannel);
- blueChannel = rgbImage(:,:,3); % Blue channel
- blueBadtmp = zeros(m,n,'uint8');
- for i = 1 : m
- for j = 1 : n
- if mod(i,2) == 0
- blueBadtmp(i,j) = blueChannel(i,j);
- end
- end
- end
- blueBad = zeros(m,n,'uint8');
- for i = 1 : m
- for j = 1 : n
- if mod(j,2) == 1
- blueBad(i,j) = blueBadtmp(i,j);
- end
- end
- end
- blueInter = blueBad;
- for i = 1 : m
- for j = 1 : n
- if (i == 1)
- blueInter(i,j) = blueInter(i+1,j);
- else
- if(i == m)
- blueInter(i,j) = blueInter(i-1,j);
- end
- end
- end
- end
- for i = 1 : m
- for j = 1 : n
- if mod(j,2) == 0
- blueInter(i,j) = ceil(blueBad(i,j+1) / 2) + ceil(blueBad(i,j-1) / 2);
- end
- end
- end
- for i = 1 : m
- for j = 1 : n
- if (mod(i,2) == 1 && i ~= 1 && i ~=m)
- blueInter(i,j) = ceil(blueInter(i-1,j)/2 + blueInter(i+1,j)/ 2);
- end
- end
- end
- %blueChannel1 = interp2(blueChannel);
- % Create an all black channel.
- allBlack = zeros(size(rgbImage, 1), size(rgbImage, 2), 'uint8');
- %Interpolacja
- %R
- blueChannel1 = interp2(double(redBad));
- % Create color versions of the individual color channels.
- just_red = cat(3, redInter, allBlack, allBlack);
- just_green = cat(3, allBlack, greenInter, allBlack);
- just_blue = cat(3, allBlack, allBlack, blueInter);
- % Recombine the individual color channels to create the original RGB image again.
- recombinedRGBImage = cat(3, redInter, greenInter, blueInter);
- % Display them all.
- figure(3)
- subplot(3, 3, 2);
- imshow(rgbImage);
- fontSize = 20;
- title('Original RGB Image', 'FontSize', fontSize)
- subplot(3, 3, 4);
- imshow(just_red);
- title('Red Channel in Red', 'FontSize', fontSize)
- subplot(3, 3, 5);
- imshow(just_green)
- title('Green Channel in Green', 'FontSize', fontSize)
- subplot(3, 3, 6);
- imshow(just_blue);
- title('Blue Channel in Blue', 'FontSize', fontSize)
- subplot(3, 3, 8);
- imshow(recombinedRGBImage);
- title('Recombined to Form Original RGB Image Again', 'FontSize', fontSize)
- % Set up figure properties:
- % Enlarge figure to full screen.
- set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0, 1, 1]);
- % Get rid of tool bar and pulldown menus that are along top of figure.
- % set(gcf, 'Toolbar', 'none', 'Menu', 'none');
- % Give a name to the title bar.
- set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
- figure()
- imshow(rgbImage);
- figure()
- imshow(recombinedRGBImage);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement