Background estimation of image in matlab

7 views (last 30 days)
Khawaja Asim
Khawaja Asim on 4 Oct 2011
I want to estimate background of an image using iterative Savitzky-Golay smoothing. So can anyone help me in this by providing me the code of this. Or if someone has code for background estimation using some other technique, that is also acceptable. Regards
  2 Comments
Image Analyst
Image Analyst on 4 Oct 2011
What do you mean by iterative? Do you mean the x direction first followed by the y direction?
Pavl M.
Pavl M. on 14 Nov 2011
I work on background estimation using histogram processing. I've assumed that that the background can be easily estimated from histogram ( run several examples provided support ).I have one method implemented in C++ and second option is under dev. ( need to compute centroid of area under histo ) Have anybody made something similar?

Sign in to comment.

Answers (2)

Image Analyst
Image Analyst on 4 Oct 2011
See my demo:
% Filter using Savitzky-Golay filtering.
% By Image Analyst
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
clc; % Clear command window.
clear; % Delete all variables.
close all; % Close all figure windows except those created by imtool.
imtool close all; % Close all figure windows created by imtool.
workspace; % Make sure the workspace panel is showing.
fontSize = 14;
% Read in standard MATLAB gray scale demo image.
% imageArray = imread('football.jpg');
imageArray = imread('cameraman.tif');
imageArray = double(imageArray);
[rows columns numberOfColorBands] = size(imageArray);
subplot(2, 2, 1);
imshow(imageArray, [0 255]);
title('Original Grayscale Image', 'FontSize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Enlarge figure to full screen.
set(gcf,'name','Savitzky-Golay Filter Demo by ImageAnalyst','numbertitle','off')
% Apply the Savitzky-Golay filter.
% First apply it in the vertical (row) direction.
k = 1; % Order of the polynomial
windowSize = 25;
verticallySmoothedImage = sgolayfilt(imageArray, k, windowSize, [], 1);
subplot(2, 2, 2);
imshow(verticallySmoothedImage, [0 255]);
title('Savitzky-Golay filtered in the vertical direction only', 'FontSize', fontSize);
% Apply the Savitzky-Golay filter.
% First apply it in the vertical (row) direction.
k = 1; % Order of the polynomial
windowSize = 25;
horizontallySmoothedImage = sgolayfilt(imageArray, k, windowSize, [], 2);
subplot(2, 2, 3);
imshow(horizontallySmoothedImage, [0 255]);
title('Savitzky-Golay filtered in the horizontal direction only', 'FontSize', fontSize);
doublySmoothedImage = sgolayfilt(verticallySmoothedImage, k, windowSize, [], 2);
subplot(2, 2, 4);
imshow(doublySmoothedImage, [0 255]);
title('Savitzky-Golay filtered in both directions', 'FontSize', fontSize);

Pavl M.
Pavl M. on 14 Nov 2011
Sorry there is no full answer at this my post but it can get closer the solution. I work on background estimation using histogram processing. I've assumed that a background can be easily estimated from histogram ( run several examples provided support ).I have one method implemented in C++ and second option is under dev. ( need to compute centroid of an area under histogram ) Have anybody made something similar? Thanks in advance.

Community Treasure Hunt

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

Start Hunting!