image alignment and stitching
Mostrar comentarios más antiguos
I'm trying to align several images so I can stitch them together.
My idea is to filter then to enhance the contrast so that matlab can then properly align them using a rigid transformation. I've tried aligning only parts of them and that doesn't work very well.
For filtering I've been trying local adaptive thresholding (<http://www.mathworks.com/matlabcentral/fileexchange/8647-local-adaptive-thresholding>) with median and wiener2 filters.
Tomorrow I'm going to try to remove the dark spots that are in every picture and replace them with the median of the surrounding pixels on the perimeter.
On an somewhat related note, does anyone have some articles or guides I could have a look at to understand when I should apply which kind of filter? Everything I find on the subject explains how the filters work but not when to apply which so I've been just trying different things and seeing how it looks.
Thanks in advance for your help!
3 comentarios
Ben
el 5 de Dic. de 2012
Image Analyst
el 5 de Dic. de 2012
Sure - give it a shot. You could also try normxcorr2() - search Answers for a demo I posted.
Ben
el 5 de Dic. de 2012
Respuestas (2)
Image Analyst
el 5 de Dic. de 2012
0 votos
Well I'm no expert in the stitching field but I don't see anything that you've listed that would do the stitching or even help with the stitching at all. But I can refer you to this page which has dozens of different published algorithm from the past 15 years: 18.4.1 Mosaic Generation, Image Stitching, Photomosaic If I were you I'd pick one of those successful algorithms and try to program it up.
5 comentarios
siqian yang
el 9 de Sept. de 2020
Editada: siqian yang
el 9 de Sept. de 2020
Hello, I want to ask whether there are algorithms that help me to repairing the cracks intrinsically caused by microscope during whole slide scan? I will appreciate if you kindly answer me . Thank you a lot.
Image Analyst
el 9 de Sept. de 2020
Not that I know of, but I would not doubt it. Just search the bibliography in the link I gave.
siqian yang
el 11 de Sept. de 2020
Let me explain more specific. Everytime I scan the same slide, I find that when I registration each slide, there are some cracks and mismatches between slides. Because the whole slide scan is devided into many small regions. Would you please give me some tips. Thanks.
Image Analyst
el 11 de Sept. de 2020
Same answer/suggestion.
siqian yang
el 12 de Sept. de 2020
Thank you so much.
Image Analyst
el 5 de Dic. de 2012
Ben: Here's my demo on normxcorr2():
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures.
clear; % Erase all existing variables.
workspace; % Make sure the workspace panel is showing.
format longg;
format compact;
fontSize = 20;
% Check that user has the Image Processing Toolbox installed.
hasIPT = license('test', 'image_toolbox');
if ~hasIPT
% User does not have the toolbox installed.
message = sprintf('Sorry, but you do not seem to have the Image Processing Toolbox.\nDo you want to try to continue anyway?');
reply = questdlg(message, 'Toolbox missing', 'Yes', 'No', 'Yes');
if strcmpi(reply, 'No')
% User said No, so exit.
return;
end
end
% Read in a standard MATLAB color demo image.
folder = fullfile(matlabroot, '\toolbox\images\imdemos');
baseFileName = 'peppers.png';
% Get the full filename, with path prepended.
fullFileName = fullfile(folder, baseFileName);
if ~exist(fullFileName, 'file')
% Didn't find it there. Check the search path for it.
fullFileName = baseFileName; % No path this time.
if ~exist(fullFileName, 'file')
% Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
rgbImage = imread(fullFileName);
% Get the dimensions of the image. numberOfColorBands should be = 3.
[rows columns numberOfColorBands] = size(rgbImage);
% Display the original color image.
subplot(2, 2, 1);
imshow(rgbImage, []);
axis on;
title('Original Color Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
smallSubImage = imcrop(rgbImage, [192 82 60 52]);
subplot(2, 2, 2);
imshow(smallSubImage, []);
axis on;
title('Template Image to Search For', 'FontSize', fontSize);
% Search the red channel for a match.
correlationOutput = normxcorr2(smallSubImage(:,:,1), rgbImage(:,:,1));
subplot(2, 2, 3);
imshow(correlationOutput, []);
title('Correlation Output', 'FontSize', fontSize);
[maxCorrValue, maxIndex] = max(abs(correlationOutput(:)));
[ypeak, xpeak] = ind2sub(size(correlationOutput),maxIndex(1));
corr_offset = [(xpeak-size(smallSubImage,2)) (ypeak-size(smallSubImage,1))];
subplot(2, 2, 4);
imshow(rgbImage);
hold on;
rectangle('position',[corr_offset(1) corr_offset(2) 50 50],...
'edgecolor','g','linewidth',2);
title('Template Image Found in Original Image', 'FontSize', fontSize);
Categorías
Más información sobre Communications Toolbox en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!