First of all, I am developing a program for barcode reading.I use Sobel derivatives to obtain Gradient representation of image in x and y direction for barcode bars.It works very well in both directions(0 to 270 degree).
But unfortunately my sobel derivative barcode can not recognize another angle of image.I don't know how to explain it, but you can understand it by looking at the two different pictures I've added below.
Correctly recognized barcode bars,
Can not detect from the same angle in reverse view,
Here is my code for sobel derivatives , I have added y direction gradient view to x direction using addweighted command.
//Sobel_variables sobel_variables; vector<sobel_variables> sobel_variables(1); sobel_variables[0].alpha = 1;
sobel_variables[0].beta = 0.9;
Sobel(gray_image, sobel_variables[0].Gradx, sobel_variables[0].ddepth, 1, 0, 3);
Sobel(gray_image, sobel_variables[0].Grady, sobel_variables[0].ddepth, 0, 1, 3);
subtract(sobel_variables[0].Gradx, sobel_variables[0].Grady, sobel_variables[0].Gradient);
convertScaleAbs(sobel_variables[0].Gradient, sobel_variables[0].Gradient);
subtract(sobel_variables[0].Grady, sobel_variables[0].Gradx, sobel_variables[0].Gradient1);
convertScaleAbs(sobel_variables[0].Gradient1, sobel_variables[0].Gradient1);
addWeighted(sobel_variables[0].Gradient, sobel_variables[0].alpha, sobel_variables[0].Gradient1, sobel_variables[0].beta, 0, sobel_variables[0].Out_Image);
//sobel_variables[0].Out_Image.
imshow("Sobel_operations", sobel_variables[0].Out_Image);
return sobel_variables[0].Out_Image;
It is really strange.Any help will be apreciated to solve this problem.