Background estimation of image in matlab

7 次查看(过去 30 天)
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 个评论
Image Analyst
Image Analyst 2011-10-4
What do you mean by iterative? Do you mean the x direction first followed by the y direction?
Pavl M.
Pavl M. 2011-11-14
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?

请先登录,再进行评论。

回答(2 个)

Image Analyst
Image Analyst 2011-10-4
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. 2011-11-14
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!

Translated by