I have two images that are the same size: image 1 image 2
how is it possible to blend them by looking at multiple rows like this (except more than 1):
blendingImage Processing Toolboxmultimodality
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format short g;format compact;fontSize = 25;%===============================================================================
% Get the name of the image the user wants to use.
baseFileName = 'o4s1_11.bmp';% Get the full filename, with path prepended.
folder = pwdfullFileName = fullfile(folder, baseFileName);%===============================================================================% Read in a first image.
grayImage1 = imread(fullFileName);% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(grayImage1)if numberOfColorChannels > 1 % It's not really gray scale like we expected - it's color.
% Use weighted sum of ALL channels to create a gray scale image.
% grayImage = rgb2gray(grayImage);
% ALTERNATE METHOD: Convert it to gray scale by taking only the green channel,
% which in a typical snapshot will be the least noisy channel.
grayImage1 = grayImage1(:, :, 2); % Take green channel.
end% Display the image.
subplot(2, 2, 1);imshow(grayImage1, []);axis on;axis image;caption = sprintf('Image1');title(caption, 'FontSize', fontSize, 'Interpreter', 'None');drawnow;hp = impixelinfo();% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0.04, 1, .96]);% 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')drawnow;%===============================================================================% Read in a second image.
fullFileName = fullfile(pwd, 'blankv5.bmp');grayImage2 = imread(fullFileName);% Get the dimensions of the image.% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.[rows, columns, numberOfColorChannels] = size(grayImage2)if numberOfColorChannels > 1 % It's not really gray scale like we expected - it's color. % Use weighted sum of ALL channels to create a gray scale image.% grayImage = rgb2gray(grayImage); % ALTERNATE METHOD: Convert it to gray scale by taking only the green channel, % which in a typical snapshot will be the least noisy channel. grayImage2 = grayImage2(:, :, 2); % Take green channel.end% Display the image.subplot(2, 2, 2);imshow(grayImage2, []);axis on;axis image;caption = sprintf('Image2');title(caption, 'FontSize', fontSize, 'Interpreter', 'None');drawnow;hp = impixelinfo();% Display the histogram of the image so we can see what threshold to use.
subplot(2, 2, 3);histogram(grayImage2);grid on;% Binarize the image.
threshold = 128;binaryImage = grayImage1 < threshold; % Determine number from histogram.
% Get rid of surround that is touching the border.
binaryImage = imclearborder(binaryImage);% Display the image.subplot(2, 2, 3);imshow(binaryImage, []);axis on;axis image;caption = sprintf('Binary Image');title(caption, 'FontSize', fontSize, 'Interpreter', 'None');drawnow;hp = impixelinfo();% Use this binary image to transfer the stuff in the second image.
grayImage2(binaryImage) = grayImage1(binaryImage);% Display the image.subplot(2, 2, 4);imshow(grayImage2, []);axis on;axis image;caption = sprintf('Final Image');title(caption, 'FontSize', fontSize, 'Interpreter', 'None');drawnow;
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;format compact;fontSize = 15;dicomImagePath = 'mr.jpg';grayImage = imread(dicomImagePath);% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(grayImage);if numberOfColorChannels > 1 % It's not really gray scale like we expected - it's color.
% Use weighted sum of ALL channels to create a gray scale image.
grayImage = rgb2gray(grayImage); % ALTERNATE METHOD: Convert it to gray scale by taking only the green channel,
% which in a typical snapshot will be the least noisy channel.
% grayImage = grayImage(:, :, 2); % Take green channel.
endsubplot(2, 2, 1);imshow(grayImage,[])axis on;title('Original Grayscale Image', 'FontSize', fontSize, 'Interpreter', 'None');% 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') uiwait(msgbox('Draw over the image'));customROI = imfreehand(gca);mask = customROI.createMask();% Mask the image using bsxfun() function
maskedImage = bsxfun(@times, grayImage, cast(mask, 'like', grayImage));subplot(2, 2, 2);imshow(maskedImage,[])title('Masked Image', 'FontSize', fontSize, 'Interpreter', 'None');subplot(2, 2, 3);histogram(grayImage, 256, 'EdgeColor', 'none')grid on;title('Histogram of Grayscale Image', 'FontSize', fontSize, 'Interpreter', 'None');subplot(2, 2, 4);% Get histogram of masked image, but only within the mask area.
histogram(maskedImage(mask), 256, 'EdgeColor', 'none')grid on;title('Histogram of Masked Image', 'FontSize', fontSize, 'Interpreter', 'None');
Best Answer