Speed up the code
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Saurabh
el 3 de Feb. de 2012
I want to speed up the code(replace the for loop) for checking whether the pixel at the center of the 3x3 neighbourhood is a minima or not. Can anyone help me with that.
function [critical_map] = Make_Critical_Map(gray_image)
[rows cols] = size(gray_image);
critical_map = zeros(rows,cols);
for i = 1:rows
for j = 1:cols
test = true;
%Check whether the gray value is lowest in the 3x3 neighbourhood
for row_inc = -1:1
if(test == true)
for col_inc = -1:1
if(test == true)
if ((i+row_inc)>=1) && ((i+row_inc)<=rows) && ((j+col_inc)>=1) && ((j+col_inc)<=cols) && (gray_image(i+row_inc,j+col_inc)<gray_image(i,j))
test = false;
end
end
end
end
end
critical_map(i,j) = test;
end
end
0 comentarios
Respuesta aceptada
Friedrich
el 3 de Feb. de 2012
Hi,
do you have access to the Image Processing toolbox? If so, you can use the imregionalmin function:
A = randint(10,10,[0 255])
BW = imregionalmin(A,ones(3))
Más respuestas (1)
Sean de Wolski
el 3 de Feb. de 2012
Using colfilt():
I = magic(5);
Imin = colfilt(padarray(I,[1 1],inf),[3 3],'sliding',@(x)(min(x,[],1)==x(5,:)));
Imin = Imin(2:end-1,2:end-1);
Ver también
Categorías
Más información sobre MATLAB Report Generator en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!