An Advanced Canny Edge Detector and its Implementation on Xilinx FPGA