bool check_side(int *ray, int i) { if (ray[0] < 60 || ray[31] < 60) { if (i <= 15) back_left(); else back_right(); } if (ray[0] < 100) return (turning_left()); else if (ray[31] < 100) return (turning_right()); return (false); }
const QImage& ImageTransformer:: SobelTransform() { QImage NewImage(_DataHandled.size(),_DataHandled.format()); int width = NewImage.width(); int height = NewImage.height(); int depth = NewImage.depth(); if(depth == 32) { for(int i=1;i<width-1;++i) { for(int j=1;j<height-1;++j) { /*O O O *O X O *O O O */ QColor front_left(_DataHandled.pixel(i-1,j-1)); QColor front(_DataHandled.pixel(i,j-1)); QColor front_right(_DataHandled.pixel(i-1,j+1)); QColor left(_DataHandled.pixel(i-1,j)); QColor right(_DataHandled.pixel(i+1,j)); QColor back_left(_DataHandled.pixel(i-1,j+1)); QColor back(_DataHandled.pixel(i,j+1)); QColor back_right(_DataHandled.pixel(i+1,j+1)); int red_x = (front_left.red()+2*front.red()+front_right.red()) - (back_left.red() +2*back.red() + back_right.red()); int green_x = (front_left.green()+2*front.green()+front_right.green()) - (back_left.green() +2*back.green() + back_right.green()); int blue_x = (front_left.blue()+2*front.blue()+front_right.blue()) - (back_left.blue() +2*back.blue() + back_right.blue()); int red_y = (front_left.red()+2*left.red()+back_left.red())- (front_right.red() +2*right.red()+back_right.red()); int green_y = (front_left.green()+2*left.green()+back_left.green())- (front_right.green() +2*right.green()+back_right.green()); int blue_y = (front_left.blue()+2*left.blue()+back_left.blue())- (front_right.blue() +2*right.blue()+back_right.blue()); int red = static_cast<int>(round(sqrt(pow(red_x,2)+pow(red_y,2)))); int green = static_cast<int>(round(sqrt(pow(green_x,2)+pow(green_y,2)))); int blue = static_cast<int>(round(sqrt(pow(blue_x,2)+pow(blue_y,2)))); red = (red > 255)? 255:red; green = (green > 255)? 255:green; blue = (blue > 255)? 255:blue; red = (red < 0)? 0:red; green = (green < 0)? 0:green; blue = (blue < 0)? 0:blue; NewImage.setPixel(i,j,QColor(red,green,blue).rgb()); } } _DataHandled = NewImage; } return _DataHandled; }