Segmentation using Chebyshev moments

1 visualización (últimos 30 días)
jihen aouni
jihen aouni el 5 de Sept. de 2012
Respondida: Vidhi Agarwal el 9 de Jun. de 2025
hello, I work on image processing domain,focusing on the segmentation of urban images. i have to make a shape constraint for segmentation using Chebyshev moments. Could you give me some ideas to implement that in MATLAB. Best regards;

Respuestas (1)

Vidhi Agarwal
Vidhi Agarwal el 9 de Jun. de 2025
Below steps can help you in getting started with urban image segmentation with a focus on shape constraints using Chebyshev moments.
  • Define the Chebyshev polynomials of the first kind Tn(x).
function T = chebyshevPoly(n, x)
if n == 0
T = ones(size(x));
elseif n == 1
T = x;
else
T = 2*x.*chebyshevPoly(n-1, x) - chebyshevPoly(n-2, x);
end
end
  • For a grayscale image I, resize and normalize coordinates to [−1,1] range:
function M = chebyshevMoments(I, maxOrder)
I = double(I);
[rows, cols] = size(I);
% Normalize spatial coordinates to [-1,1]
x = linspace(-1, 1, cols);
y = linspace(-1, 1, rows);
[X, Y] = meshgrid(x, y);
M = zeros(maxOrder+1, maxOrder+1);
for m = 0:maxOrder
for n = 0:maxOrder
Tm = chebyshevPoly(m, X);
Tn = chebyshevPoly(n, Y);
M(m+1, n+1) = sum(sum(I .* Tm .* Tn));
end
end
end
  • Use Moments as Shape Constraints. Let’s say, "M_target" is the moment matrix of a known shape (e.g., ideal building mask) and "M_seg" is the moment matrix of the current segmentation mask.
function loss = shapeConstraint(M_target, M_seg)
loss = sum((M_target(:) - M_seg(:)).^2); % L2 distance
end
  • You can add this loss to your segmentation cost function or energy function in a graph cut, active contour, or deep learning pipeline.
Hope this helps!

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by