image alignment and stitching

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.
Here are the images I'm trying to align: http://imageshack.us/g/1/9903605/
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
Ben el 5 de Dic. de 2012
Since there is no distortion in the images I was going to just align them and then average the values between the images. as my way of "stitching" and then if needed make it better.
Do you think this is worth it or should I just try to write a program to do it.
I was using the function imregister for the alignment.
Image Analyst
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
Ben el 5 de Dic. de 2012
Didn't have any lug with normxcorr2() but I also wasn't able to find your demo. Can you point me in the right direction?
I wrote a script to take the big black spots and replace them with the median of the values around the perimeter and that improved the alignment. I was able to get them to almost align using imregister().
I've posted more pictures of my images after various filters and things here.

Iniciar sesión para comentar.

Respuestas (2)

Image Analyst
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
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
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
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
Image Analyst el 11 de Sept. de 2020
Same answer/suggestion.
siqian yang
siqian yang el 12 de Sept. de 2020
Thank you so much.

Iniciar sesión para comentar.

Image Analyst
Image Analyst el 5 de Dic. de 2012

0 votos

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.

Preguntada:

Ben
el 5 de Dic. de 2012

Comentada:

el 12 de Sept. de 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by