Я использовал фильтр Scharr, и у меня есть x и y градиенты отсюда. Могу ли я узнать, как я могу построить карту ориентации отсюда?
Вот изображение моего результата фильтра Шарра. Это изображение отпечатка пальца.
И это код, который я использовал.
Mat src,grad;
Mat grad_x,grad_y;
Mat abs_grad_x,abs_grad_y;
int scale=1;
int delta=0;
int ddepth=CV_16S;
int c;
src=cv::imread("remove_noise.bmp",CV_LOAD_IMAGE_UNCHANGED);
Scharr(src,grad_x,ddepth,1,0,scale,delta,BORDER_DEFAULT);
convertScaleAbs(grad_x,abs_grad_x);
Scharr( src, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
convertScaleAbs(grad_y,abs_grad_y);
addWeighted(abs_grad_x,0.5,abs_grad_y,0.5,0,grad);
cv::imwrite("SobelScharr.bmp",grad);
Я реализовал ориентацию гребня несколько месяцев назад, используя matlab. Я использовал график скорости для построения гребней. У меня нет знаний об opencv. Полагаю, это может помочь вам. Вот мой код.
% Orientation vectors
vec_u = len/2*cos(p_theta);
vec_u = filter2(smooth,vec_u);
vec_v = len/2*sin(p_theta);
vec_v = filter2(smooth,vec_v);
quiver(x,y,vec_u,vec_v,0,'.','linewidth',1.2, 'color','k');
% imshow('FillValues',255);
axis equal,axis ij,axis off; hold off;
Это также может помочь вам ..
Других решений пока нет …