├── README.md └── imageprocessing ├── 1.GUIFeaturesInOpenCV ├── 1.Images_1.1.SumItUp.py ├── 1.Images_1.2.Matplot.py ├── 1.Images_1.py ├── 2.Video_1.2.SaveVideo.py ├── 2.Videos_1.1.LoadVideo.py ├── 2.Videos_1.py ├── 3.Drawing.py ├── 4.MouseAsPaintBrush.py ├── messi5.jpg ├── messigray.png └── test.png ├── 2.CoreOperations ├── 1.1.ImageROI.py ├── 1.2.ImageBorder.py ├── 1.BasicOperations.py ├── 2.ImageBlending.py ├── messi5.jpg └── opencv_logo.jpg ├── 3.ImageProcessing ├── 1.1.ChangeColorSpaceCamera.py ├── 1.ChangeColorSpaceImage.py ├── 2.1.AdaptiveThresholding.py ├── 2.2.OtsuThresholding.py ├── 2.BinaryThresholding.py ├── 3.1.Scaling.py ├── 3.2.Translation.py ├── 3.3.Rotation.py ├── 4.Filtering.py ├── 5.1.CannyKenarBulmaAlgoritmasi.py ├── 5.ImageGradient-KenarBulma.py ├── 6.1.ContoursShapeMatch.py ├── 6.Contours.py ├── 7.TemplateMatching.py ├── 8.BackgroundSubtractor.py ├── dikdortgen.jpg ├── filter1.jpg ├── filter2.jpg ├── kare.png ├── messi5.jpg ├── muslera.png ├── sudoku-original.jpg ├── template.jpg ├── yildiz.jpg └── yildiz2.jpg └── 4.SimpleApps ├── 1.FaceAndEyeDetection.py ├── 2.CarCounting.py ├── 3.PeopleCounting.py ├── Person.py ├── __pycache__ └── Person.cpython-36.pyc ├── children1.JPG ├── children2.JPG ├── video.avi └── xml ├── haarcascade_eye.xml ├── haarcascade_eye_tree_eyeglasses.xml ├── haarcascade_frontalcatface.xml ├── haarcascade_frontalcatface_extended.xml ├── haarcascade_frontalface_alt.xml ├── haarcascade_frontalface_alt2.xml ├── haarcascade_frontalface_alt_tree.xml ├── haarcascade_frontalface_default.xml ├── haarcascade_fullbody.xml ├── haarcascade_lefteye_2splits.xml ├── haarcascade_licence_plate_rus_16stages.xml ├── haarcascade_lowerbody.xml ├── haarcascade_profileface.xml ├── haarcascade_righteye_2splits.xml ├── haarcascade_russian_plate_number.xml ├── haarcascade_smile.xml └── haarcascade_upperbody.xml /README.md: -------------------------------------------------------------------------------- 1 | # ImageProcessing for IEEE RAS Camp 2019 2 | 3 | Books 4 | - OpenCV ile Görüntü İşleme (Mesut Pişkin) 5 | - Veri Bilimi Uygulama Senaryoları (Deniz Kılınç, Nezahat Başeğmez) 6 | 7 | Web Sites 8 | - https://www.turanerdemsimsek.com/ 9 | - http://ibrahimdelibasoglu.blogspot.com/ 10 | - http://mavienginberk.blogspot.com/ 11 | - https://medium.com/@sddkal 12 | 13 | Presentations 14 | - Part1: https://docs.google.com/presentation/d/15D-OreYC6SNIOUXjqEneV0K5EgY1EShC3R2K0qpjIz0/edit?usp=sharing 15 | - Part2: https://docs.google.com/presentation/d/1G6YFqMHw9HDi5BWOnr4O2iObt3R50DtSxxxTFiKt_xY/edit?usp=sharing 16 | -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/1.Images_1.1.SumItUp.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | img = cv2.imread('messi5.jpg', cv2.IMREAD_GRAYSCALE) 5 | cv2.imshow('image',img) 6 | 7 | k = cv2.waitKey(0) 8 | 9 | if (k == 27): # wait for ESC key to exit 10 | cv2.destroyAllWindows() 11 | elif (k == ord('s')): # wait for 's' key to save and exit 12 | cv2.imwrite('messigray.png',img) 13 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/1.Images_1.2.Matplot.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | from matplotlib import pyplot as plt 4 | 5 | ''' 6 | Using Matplotlib 7 | Matplotlib is a plotting library for Python which gives you wide variety of plotting methods. 8 | ''' 9 | 10 | img = cv2.imread('messi5.jpg',0) 11 | 12 | plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') 13 | 14 | plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis 15 | 16 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/1.Images_1.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # READ AN IMAGE 4 | # ============================================================================= 5 | Use the function cv2.imread() to read an image. The image should be in the working directory or a full path of 6 | image should be given. 7 | 8 | Second argument is a flag which specifies the way image should be read. 9 | 10 | cv2.IMREAD_COLOR : Loads a color image. Any transparency of image will be neglected. It is the default flag. 11 | cv2.IMREAD_GRAYSCALE : Loads image in grayscale mode 12 | cv2.IMREAD_UNCHANGED : Loads image as such including alpha channel 13 | ''' 14 | 15 | import numpy as np 16 | import cv2 17 | 18 | # Load an color image in grayscale 19 | img = cv2.imread('messi5.jpg',cv2.IMREAD_GRAYSCALE) 20 | 21 | 22 | 23 | ''' 24 | # ============================================================================= 25 | # DISPLAY AN IMAGE 26 | # ============================================================================= 27 | Use the function cv2.imshow() to display an image in a window. The window automatically fits to the image size. 28 | 29 | First argument is a window name which is a string. second argument is our image. 30 | You can create as many windows as you wish, but with different window names. 31 | 32 | cv2.waitKey() is a keyboard binding function. Its argument is the time in milliseconds. 33 | The function waits for specified milliseconds for any keyboard event. If you press any key in that time, 34 | the program continues. 35 | If 0 is passed, it waits indefinitely for a key stroke. It can also be set to detect specific key strokes like, 36 | if key a is pressed etc which we will discuss below. 37 | 38 | cv2.destroyAllWindows() simply destroys all the windows we created. If you want to destroy any specific window, 39 | use the function cv2.destroyWindow() where you pass the exact window name as the argument. 40 | 41 | ''' 42 | 43 | cv2.namedWindow('image', cv2.WINDOW_NORMAL) 44 | cv2.imshow('image', img) 45 | cv2.waitKey(0) 46 | cv2.destroyAllWindows() 47 | 48 | ''' 49 | # ============================================================================= 50 | # WRITE AN IMAGE 51 | # ============================================================================= 52 | 53 | Use the function cv2.imwrite() to save an image. 54 | 55 | First argument is the file name, second argument is the image you want to save. 56 | ''' 57 | 58 | #Bu satırı doğru yere taşı? 59 | cv2.imwrite('messigray.png',img) 60 | -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/2.Video_1.2.SaveVideo.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | ''' 5 | Saving a Video 6 | So we capture a video, process it frame-by-frame and we want to save that video. 7 | 8 | We create a VideoWriter object. We should specify the output file name (eg: output.avi). 9 | Then we should specify the FourCC code. Then number of frames per second (fps) 10 | and frame size should be passed. And last one is isColor flag. If it is True, encoder expect color frame, 11 | otherwise it works with grayscale frame. 12 | ''' 13 | 14 | cap = cv2.VideoCapture(0) 15 | 16 | fps = 30.0 17 | capsize = (1280, 720) 18 | 19 | # Define the codec and create VideoWriter Object 20 | fourcc = cv2.VideoWriter_fourcc('m', 'p','4','v') 21 | out = cv2.VideoWriter() 22 | success = out.open('output.mov', fourcc, fps, capsize, True) 23 | 24 | while(cap.isOpened()): 25 | ret, frame = cap.read() 26 | if ret==True: 27 | # frame = cv2.flip(frame,0) 28 | 29 | # write the flipped frame 30 | out.write(frame) 31 | 32 | cv2.imshow('frame',frame) 33 | if cv2.waitKey(1) & 0xFF == ord('q'): 34 | break 35 | else: 36 | break 37 | 38 | # Release everything if job is finished 39 | cap.release() 40 | out.release() 41 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/2.Videos_1.1.LoadVideo.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | ''' 5 | Playing Video from file 6 | It is same as capturing from Camera, just change camera index with video file name. 7 | Also while displaying the frame, use appropriate time for cv2.waitKey(). 8 | If it is too less, video will be very fast and if it is too high, 9 | video will be slow (Well, that is how you can display videos in slow motion). 10 | 25 milliseconds will be OK in normal cases. 11 | ''' 12 | 13 | cap = cv2.VideoCapture('Video1.mov') 14 | 15 | while(cap.isOpened()): 16 | ret, frame = cap.read() 17 | 18 | #print (cap.get(5)) #to display frame rate of video 19 | #print (cap.get(cv2.cv.CV_CAP_PROP_FPS)) 20 | 21 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #try COLORMAP_WINTER 22 | 23 | cv2.imshow('frame', gray) 24 | if cv2.waitKey(1) & 0xFF == ord('q'): 25 | break 26 | 27 | cap.release() 28 | cv2.destroyAllWindows() 29 | -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/2.Videos_1.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | ''' 5 | # ============================================================================= 6 | # CAPTURE VIDEO FROM CAMERA 7 | # ============================================================================= 8 | 9 | Often, we have to capture live stream with camera. 10 | OpenCV provides a very simple interface to this. 11 | To capture a video, you need to create a VideoCapture object. 12 | Its argument can be either the device index or the name of a video file. 13 | Device index is just the number to specify which camera. 14 | Normally one camera will be connected (as in my case). So I simply pass 0 (or -1). 15 | ''' 16 | 17 | cap = cv2.VideoCapture(0) 18 | 19 | ''' 20 | cap.read() returns a bool (True/False). If frame is read correctly, it will be True. 21 | So you can check end of the video by checking this return value. 22 | ''' 23 | 24 | while(True): 25 | # Capture frame-by-frame 26 | ret, frame = cap.read() 27 | 28 | ''' 29 | Check the frame width and height by cap.get(3) and cap.get(4). 30 | ret = cap.set(3,320) 31 | ret = cap.set(4,240) 32 | ''' 33 | 34 | # Our operations on the frame come here 35 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 36 | 37 | # Display the resulting frame 38 | cv2.imshow('frame', gray) 39 | if cv2.waitKey(1) & 0xFF == ord('q'): 40 | break 41 | 42 | # When everything done, release the capture 43 | cap.release() 44 | cv2.destroyAllWindows() 45 | 46 | -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/3.Drawing.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # DRAWING FUNCTIONS 4 | # ============================================================================= 5 | Learn to draw different geometric shapes with OpenCV 6 | Functions : cv2.line(), cv2.circle() , cv2.rectangle(), 7 | cv2.ellipse(), cv2.putText() etc. 8 | 9 | img : The image where you want to draw the shapes 10 | color : Color of the shape. for BGR, pass it as a tuple, eg: (255,0,0) for blue. 11 | For grayscale, just pass the scalar value. 12 | thickness : Thickness of the line or circle etc. If -1 is passed for closed figures like circles, 13 | it will fill the shape. default thickness = 1 14 | lineType : Type of line, whether 8-connected, anti-aliased line etc. By default, it is 8-connected. 15 | cv2.LINE_AA gives anti-aliased line which looks great for curves. 16 | ''' 17 | 18 | 19 | import numpy as np 20 | import cv2 21 | 22 | # Create a black image 23 | img = np.zeros((512,512,3), np.uint8) 24 | 25 | # Draw a diagonal blue line with thickness of 5 px 26 | img = cv2.line(img,(0,0),(511,511),(255,0,0),5) 27 | 28 | 29 | #To draw a rectangle, you need top-left corner and bottom-right corner of rectangle. 30 | #This time we will draw a green rectangle at the top-right corner of image. 31 | img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3) 32 | 33 | #To draw a circle, you need its center coordinates and radius. 34 | #We will draw a circle inside the rectangle drawn above. 35 | img = cv2.circle(img,(447,63), 63, (0,0,255), -1) 36 | 37 | 38 | #Drawing Ellipse 39 | img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1) 40 | 41 | #Drawing Polygon 42 | pts = np.array([[10,5],[20,30],[70,20],[50,70]], np.int32) 43 | pts = pts.reshape((-1,1,2)) 44 | img = cv2.polylines(img,[pts],True,(0,255,255)) 45 | 46 | 47 | ''' 48 | # ============================================================================= 49 | # ADDING TEXT 50 | # ============================================================================= 51 | To put texts in images, you need specify following things. 52 | Text data that you want to write 53 | Position coordinates of where you want put it (i.e. bottom-left corner where data starts). 54 | Font type (Check cv2.putText() docs for supported fonts) 55 | Font Scale (specifies the size of font) 56 | regular things like color, thickness, lineType etc. For better look, lineType = cv2.LINE_AA is recommended. 57 | ''' 58 | font = cv2.FONT_HERSHEY_SIMPLEX 59 | cv2.putText(img,'Image', (10,500), font, 4, (255,255,255), 2, cv2.LINE_AA) 60 | 61 | cv2.imshow('image', img) 62 | k = cv2.waitKey(0) 63 | if (k == 27): # wait for ESC key to exit 64 | cv2.destroyAllWindows() 65 | -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/4.MouseAsPaintBrush.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # MOUSE AS A PAINT BRUSH 4 | # ============================================================================= 5 | ''' 6 | import cv2 7 | import numpy as np 8 | 9 | 10 | # ============================================================================= 11 | # STEP 1: SHOW EVENTS 12 | # ============================================================================= 13 | events = [i for i in dir(cv2) if 'EVENT' in i] 14 | print(events) 15 | 16 | 17 | # ============================================================================= 18 | # STEP 2: SHOW DEMO 19 | # ============================================================================= 20 | # mouse callback function 21 | def draw_circle(event,x,y,flags,param): 22 | if event == cv2.EVENT_FLAG_LBUTTON: 23 | cv2.circle(img,(x,y),100,(255,0,0),-1) 24 | 25 | # Create a black image, a window and bind the function to window 26 | img = np.zeros((512,512,3), np.uint8) 27 | cv2.namedWindow('image') 28 | cv2.setMouseCallback('image',draw_circle) 29 | 30 | while(1): 31 | cv2.imshow('image',img) 32 | if cv2.waitKey(1) & 0xFF == 27: 33 | break 34 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/messi5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/1.GUIFeaturesInOpenCV/messi5.jpg -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/messigray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/1.GUIFeaturesInOpenCV/messigray.png -------------------------------------------------------------------------------- /imageprocessing/1.GUIFeaturesInOpenCV/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/1.GUIFeaturesInOpenCV/test.png -------------------------------------------------------------------------------- /imageprocessing/2.CoreOperations/1.1.ImageROI.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Image ROI - (Region of Image) 4 | # ============================================================================= 5 | 6 | Sometimes, you will have to play with certain region of images. For eye detection in images, 7 | first perform face detection over the image until the face is found, then search within the face 8 | region for eyes. This approach improves accuracy (because eyes are always on faces) and performance 9 | (because we search for a small area). 10 | 11 | ''' 12 | 13 | import cv2 14 | import numpy as np 15 | 16 | img = cv2.imread('messi5.jpg') 17 | 18 | # ROI using Numpy indexing. Here we select the ball and copy it to another region in the image: 19 | ball = img[280:340, 330:390] 20 | 21 | 22 | # Show ball 23 | 24 | cv2.namedWindow('image', cv2.WINDOW_NORMAL) 25 | cv2.imshow('image', ball) 26 | cv2.waitKey(0) 27 | cv2.destroyAllWindows() 28 | 29 | 30 | # Copy and show ball in picture 31 | 32 | 33 | img[273:333, 100:160] = ball 34 | 35 | cv2.namedWindow('image', cv2.WINDOW_NORMAL) 36 | cv2.imshow('image', img) 37 | cv2.waitKey(0) 38 | cv2.destroyAllWindows() 39 | -------------------------------------------------------------------------------- /imageprocessing/2.CoreOperations/1.2.ImageBorder.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 3 | # ============================================================================= 4 | # Making Borders for Images (Padding) 5 | # ============================================================================= 6 | 7 | Something like a photo frame, you can use cv2.copyMakeBorder() function. 8 | But it has more applications for convolution operation, zero padding etc. 9 | 10 | This function takes following arguments: 11 | 12 | src - input image 13 | top, bottom, left, right - border width in number of pixels in corresponding directions 14 | borderType - Flag defining what kind of border to be added. It can be following types: 15 | cv2.BORDER_CONSTANT - Adds a constant colored border. 16 | cv2.BORDER_REFLECT - Border will be mirror reflection of the border elements 17 | cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT - Same as above, but with a slight change 18 | cv2.BORDER_REPLICATE - Last element is replicated throughout 19 | cv2.BORDER_WRAP - it will look like this : cdefgh|abcdefgh|abcdefg 20 | value - Color of border if border type is cv2.BORDER_CONSTANT 21 | 22 | ''' 23 | 24 | import cv2 25 | import numpy as np 26 | from matplotlib import pyplot as plt 27 | 28 | BLUE = [255,0,0] 29 | 30 | img1 = cv2.imread('opencv_logo.jpg') 31 | 32 | replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE) 33 | reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT) 34 | reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101) 35 | wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP) 36 | constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE) 37 | 38 | plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL') 39 | plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE') 40 | plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT') 41 | plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101') 42 | plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP') 43 | plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT') 44 | 45 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/2.CoreOperations/1.BasicOperations.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Accessing and Modifying pixel values 4 | # ============================================================================= 5 | ''' 6 | 7 | 8 | import cv2 9 | import numpy as np 10 | import matplotlib.pyplot as plt 11 | 12 | img = cv2.imread('messi5.jpg') 13 | 14 | 15 | ''' 16 | Accessing Image Properties 17 | Image properties include number of rows, columns and channels, type of image data, 18 | number of pixels etc. 19 | 20 | Shape of image is accessed by img.shape. It returns a tuple of number of rows, 21 | columns and channels (if image is color): 22 | ''' 23 | 24 | print (img.shape) 25 | 26 | #Total number of pixels is accessed by img.size 27 | print (img.size) 28 | 29 | print('Type of the image : ' , type(img)) 30 | print() 31 | print('Shape of the image : {}'.format(img.shape)) 32 | print('Image Hight {}'.format(img.shape[0])) 33 | print('Image Width {}'.format(img.shape[1])) 34 | print('Dimension of Image {}'.format(img.ndim)) 35 | print('Maximum RGB value in this image {}'.format(img.max())) 36 | print('Minimum RGB value in this image {}'.format(img.min())) 37 | 38 | 39 | 40 | 41 | ''' 42 | You can access a pixel value by its row and column coordinates. 43 | For BGR image, it returns an array of Blue, Green, Red values. 44 | For grayscale image, just corresponding intensity is returned. 45 | ''' 46 | 47 | px = img[100,100] 48 | print (px) 49 | # [B:156 G:166 R:200] 50 | 51 | # Channel 0 --> Blue 52 | # Channel 1 --> Green 53 | # Channel 2 --> Red 54 | 55 | 56 | # accessing only blue pixel (from channel 0) 57 | blue = img[100, 100, 0] 58 | print (blue) 59 | 60 | 61 | # You can modify the pixel values the same way. 62 | img[100, 100] = [255, 255, 255] 63 | print (img[100, 100]) 64 | 65 | 66 | 67 | fig, ax = plt.subplots(nrows = 1, ncols=3, figsize=(15,5)) 68 | for c, ax in zip(range(3), ax): 69 | 70 | # create zero matrix 71 | split_img = np.zeros(img.shape, dtype="uint8") 72 | 73 | # assing each channel 74 | split_img[ :, :, c] = img[ :, :, c] 75 | 76 | # display each channel 77 | ax.imshow(split_img) 78 | -------------------------------------------------------------------------------- /imageprocessing/2.CoreOperations/2.ImageBlending.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Image Blending 4 | # ============================================================================= 5 | This is also image addition, but different weights are given to images so that 6 | it gives a feeling of blending or transparency. 7 | ''' 8 | 9 | import cv2 10 | 11 | img1 = cv2.imread('messi5.jpg') 12 | img2 = cv2.imread('opencv_logo.jpg') 13 | 14 | # Difference of dimensions 15 | print (img1.shape) 16 | print (img2.shape) 17 | 18 | 19 | piece1 = img1[180:280, 330:430] 20 | print (piece1.shape) 21 | 22 | new = cv2.addWeighted(piece1, 0.7, img2, 0.3, 0) 23 | 24 | cv2.imshow('dst',new) 25 | cv2.waitKey(0) 26 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/2.CoreOperations/messi5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/2.CoreOperations/messi5.jpg -------------------------------------------------------------------------------- /imageprocessing/2.CoreOperations/opencv_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/2.CoreOperations/opencv_logo.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/1.1.ChangeColorSpaceCamera.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Changing Color-space 4 | # ============================================================================= 5 | 6 | There are more than 150 color-space conversion methods available in OpenCV. 7 | But we will look into only two which are most widely used ones, BGR <-> Gray and BGR <-> HSV. 8 | 9 | For color conversion, we use the function cv2.cvtColor(input_image, flag) 10 | where flag determines the type of conversion. 11 | 12 | For BGR <-> Gray conversion we use the flags cv2.COLOR_BGR2GRAY. 13 | Similarly for BGR <-> HSV, we use the flag cv2.COLOR_BGR2HSV 14 | ''' 15 | 16 | import cv2 17 | import numpy as np 18 | 19 | flags = [i for i in dir(cv2) if i.startswith('COLOR_')] 20 | print (flags) 21 | 22 | 23 | ''' 24 | # ============================================================================= 25 | # Object Tracking 26 | # ============================================================================= 27 | Now we know how to convert BGR image to HSV, we can use this to extract a colored object. 28 | In HSV, it is more easier to represent a color than RGB color-space. 29 | In our application, we will try to extract a blue colored object. 30 | 31 | So here is the method: 32 | 33 | 1. Take each frame of the video 34 | 2. Convert from BGR to HSV color-space 35 | 3. We threshold the HSV image for a range of blue color 36 | 4. Now extract the blue object alone, we can do whatever on that image we want. 37 | 38 | ''' 39 | 40 | cap = cv2.VideoCapture(0) 41 | 42 | while(1): 43 | 44 | # Take each frame 45 | _, frame = cap.read() 46 | 47 | # Convert BGR to HSV 48 | hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 49 | 50 | # define range of blue color in HSV 51 | lower_blue = np.array([110,50,50]) 52 | upper_blue = np.array([130,255,255]) 53 | 54 | # Threshold the HSV image to get only blue colors 55 | mask = cv2.inRange(hsv, lower_blue, upper_blue) 56 | 57 | # Bitwise-AND mask and original image 58 | res = cv2.bitwise_and(frame, frame, mask = mask) 59 | 60 | cv2.imshow('frame',frame) 61 | cv2.imshow('mask',mask) 62 | cv2.imshow('res',res) 63 | k = cv2.waitKey(5) & 0xFF 64 | if k == 27: 65 | break 66 | 67 | cv2.destroyAllWindows() 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/1.ChangeColorSpaceImage.py: -------------------------------------------------------------------------------- 1 | # import the necessary packages 2 | import numpy as np 3 | import cv2 4 | 5 | isRGB = True 6 | # load the image 7 | image = cv2.imread("muslera.png") 8 | 9 | # define the list of boundaries 10 | 11 | if (isRGB): 12 | boundaries = [ 13 | ([17, 10, 100], [50, 60, 200]), 14 | ([25, 146, 190], [100, 180, 250])] 15 | converted = image 16 | else: #HSV 17 | boundaries = [ 18 | ([160, 0, 0], [180, 255, 255]), 19 | ([20, 0, 0], [30, 255, 255])] 20 | converted = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 21 | 22 | for (lower, upper) in boundaries: 23 | # create NumPy arrays from the boundaries 24 | lower = np.array(lower, dtype = "uint8") 25 | upper = np.array(upper, dtype = "uint8") 26 | 27 | # find the colors within the specified boundaries and apply 28 | # the mask 29 | mask = cv2.inRange(converted, lower, upper) 30 | output = cv2.bitwise_and(image, image, mask = mask) 31 | 32 | cv2.imshow("images", output) 33 | cv2.waitKey(0) 34 | 35 | ''' 36 | HSV renk uzayında kırmızı rengi ayırt etmek için ise Saturation ve Value değerlerinin ne olduğuna bakmaksızın 37 | sadece Hue değerine bakarak filtreleme yapabiliriz!. Kırmızı için renk değeri 160-180 arası bölgeyi, 38 | sarı için ise 20-30 arasındaki renk değerlerini filtreleyerek istediğimiz sonuca ulaşabiliriz. 39 | Böylece Hem daha kolay hem de daha hassas sonuç elde ediyoruz.. 40 | ''' 41 | 42 | ''' 43 | How to find HSV values to track? 44 | It is very simple and you can use the same function, cv2.cvtColor(). 45 | Instead of passing an image, you just pass the BGR values you want. 46 | For example, to find the HSV value of Green, try following commands in Python terminal: 47 | 48 | >>> green = np.uint8([[[0,255,0 ]]]) 49 | >>> hsv_green = cv2.cvtColor(green,cv2.COLOR_BGR2HSV) 50 | >>> print hsv_green 51 | [[[ 60 255 255]]] 52 | 53 | Now you take [H-10, 100,100] and [H+10, 255, 255] as lower bound and upper bound respectively. 54 | Apart from this method, you can use any image editing tools like GIMP or any online converters 55 | to find these values, but don’t forget to adjust the HSV ranges. 56 | ''' 57 | -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/2.1.AdaptiveThresholding.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Adaptive Thresholding 4 | # ============================================================================= 5 | In the previous section, we used a global value as threshold value. 6 | But it may not be good in all the conditions where image has different 7 | lighting conditions in different areas. In that case, we go for adaptive thresholding. 8 | In this, the algorithm calculate the threshold for a small regions of the image. 9 | So we get different thresholds for different regions of the same image and 10 | it gives us better results for images with varying illumination. 11 | 12 | It has three ‘special’ input params and only one output argument. 13 | 14 | Adaptive Method - It decides how thresholding value is calculated. 15 | 16 | - cv2.ADAPTIVE_THRESH_MEAN_C : threshold value is the mean of neighbourhood area. 17 | - cv2.ADAPTIVE_THRESH_GAUSSIAN_C : threshold value is the weighted sum. 18 | 19 | - neighbourhood values where weights are a gaussian window. 20 | - Block Size : It decides the size of neighbourhood area. 21 | - C : It is just a constant which is subtracted from the mean or weighted mean calculated. 22 | ''' 23 | 24 | 25 | import cv2 26 | from matplotlib import pyplot as plt 27 | 28 | img = cv2.imread('messi5.jpg',0) 29 | img = cv2.medianBlur(img,5) 30 | 31 | ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) 32 | th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\ 33 | cv2.THRESH_BINARY,11,2) 34 | th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\ 35 | cv2.THRESH_BINARY,11,2) 36 | 37 | titles = ['Original Image', 'Global Thresholding (v = 127)', 38 | 'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding'] 39 | images = [img, th1, th2, th3] 40 | 41 | for i in range(4): 42 | plt.subplot(2,2,i+1),plt.imshow(images[i],'gray') 43 | plt.title(titles[i]) 44 | plt.xticks([]),plt.yticks([]) 45 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/2.2.OtsuThresholding.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Otsu Eşik Belirleme 4 | # ============================================================================= 5 | 6 | Normalde bir gri görüntüyü ikili biçime çevirmek için izlenecek yöntem oldukça basittir. 7 | Bir eşik değeri belirlenir ve bu eşik değerin üzerindeki renkler beyaza, altındaki renkler 8 | siyaha dönüştürülür. Ancak tüm görüntüler aynı niteliklere sahip değildir. 9 | Sabit bir eşik değeri tüm görüntüler üzerinde kabul edilebilir sonuçlar üretemeyebilir. 10 | Dolayısıyla eşik değerin, resmin renk dağılımına uygun olarak belirlenmesini sağlayacak bir yönteme ihtiyaç duyulur. 11 | 12 | Otsu metodu, gri seviye görüntüler üzerinde uygulanabilen bir eşik tespit yöntemidir. 13 | Bu metod kullanılırken görüntünün arka plan ve ön plan olmak üzere 14 | iki renk sınıfından oluştuğu varsayımı yapılır. Daha sonra tüm eşik değerleri için 15 | bu iki renk sınıfının sınıf içi varyans değeri hesaplanır. 16 | Bu değerin en küçük olmasını sağlayan eşik değeri, optimum eşik değeridir. 17 | ''' 18 | 19 | import cv2 20 | from matplotlib import pyplot as plt 21 | 22 | img = cv2.imread('messi5.jpg',0) 23 | 24 | # global thresholding 25 | ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) 26 | 27 | # Otsu's thresholding 28 | ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) 29 | 30 | # Otsu's thresholding after Gaussian filtering 31 | blur = cv2.GaussianBlur(img,(5,5),0) 32 | ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) 33 | 34 | # plot all the images and their histograms 35 | images = [img, 0, th1, 36 | img, 0, th2, 37 | blur, 0, th3] 38 | titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)', 39 | 'Original Noisy Image','Histogram',"Otsu's Thresholding", 40 | 'Gaussian filtered Image','Histogram',"Otsu's Thresholding"] 41 | 42 | for i in range(3): 43 | plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray') 44 | plt.title(titles[i*3]), plt.xticks([]), plt.yticks([]) 45 | plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256) 46 | plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([]) 47 | plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray') 48 | plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([]) 49 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/2.BinaryThresholding.py: -------------------------------------------------------------------------------- 1 | ''' 2 | OpenCV Thresholding (Esikleme) 3 | 4 | Giris olarak verilen goruntuyu ikili goruntuye cevirmek icin kullanilan bir yontemdir. 5 | Ikili goruntu (binary), goruntunun siyah ve beyaz olarak tanimlanmasidir. 6 | Morfolojik operatorler gibi goruntu uzerindeki gurultuleri azaltmak veya nesne belirlemek gibi 7 | farkli amaclar icin kullanilir. Giris olarak verilen goruntu uzerinde uygulanan thresholding 8 | tipine bagli olarak, pikselleri verilen esik degerine gore siyah ya da beyaz olarak gunceller. 9 | 10 | OpenCV icerisindeki sik kullanilan threshold tipleri: 11 | 12 | THRESH_BINARY 13 | THRESH_BINARY_INV 14 | THRESH_TRUNC 15 | THRESH_TOZERO 16 | THRESH_TOZERO_INV 17 | 18 | 19 | cv2.threshold(src, thresh, maxval, type[, dst]) 20 | 21 | SRC; Giris dizisidir. Bu dizi gri tonlamali bir resim olmalidir. 22 | TRESH; Esik ve Piksel degerlerini siniflandirmak icin kullanilir 23 | MAXVAL; THRESH_BINARY ve THRESH_BINARY_INV esikleme turlerini maksimum degerde kullanmak icin yazilir. 24 | TYPE; Threshold tipleri belirlenir. 25 | 26 | 27 | ''' 28 | 29 | import cv2 30 | import numpy as np 31 | from matplotlib import pyplot as plt 32 | 33 | # Resim Gri Skalada Okunur# 34 | img = cv2.imread('messi5.jpg',0) 35 | 36 | # Resime Goruntu Esiklemeler uygulanir# 37 | ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) 38 | ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) 39 | ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC) 40 | ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO) 41 | ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV) 42 | 43 | # Goruntu Ekraninin isimleri ve Degiskenleri Atanir# 44 | titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV'] 45 | images = [img, thresh1, thresh2, thresh3, thresh4, thresh5] 46 | 47 | # Ayni Ekranda Thresholdlar Gozlenir# 48 | for i in range(6): 49 | plt.subplot(2,3,i+1),plt.imshow(images[i],'gray') 50 | plt.title(titles[i]) 51 | plt.xticks([]),plt.yticks([]) 52 | 53 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/3.1.Scaling.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Scaling 4 | # ============================================================================= 5 | Scaling is just resizing of the image. OpenCV comes with a function cv2.resize() for this purpose. 6 | The size of the image can be specified manually, or you can specify the scaling factor. 7 | Different interpolation methods are used. Preferable interpolation methods are cv2.INTER_AREA for 8 | shrinking and cv2.INTER_CUBIC (slow) & cv2.INTER_LINEAR for zooming. 9 | By default, interpolation method used is cv2.INTER_LINEAR for all resizing purposes. 10 | You can resize an input image either of following methods: 11 | ''' 12 | 13 | import cv2 14 | import numpy as np 15 | 16 | img = cv2.imread('messi5.jpg') 17 | 18 | #res = cv2.resize(img, None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC) 19 | 20 | #OR 21 | height, width = img.shape[:2] 22 | res = cv2.resize(img,(2*width, 2*height), interpolation = cv2.INTER_CUBIC) 23 | 24 | cv2.namedWindow('image', cv2.WINDOW_NORMAL) 25 | cv2.imshow('image', res) 26 | cv2.waitKey(0) 27 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/3.2.Translation.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Translation 4 | # ============================================================================= 5 | Translation is the shifting of object’s location. 6 | 7 | You can take make it into a Numpy array of 8 | type np.float32 and pass it into cv2.warpAffine() function. 9 | See below example for a shift of (100,50): 10 | ''' 11 | 12 | import cv2 13 | import numpy as np 14 | 15 | img = cv2.imread('messi5.jpg',0) 16 | rows,cols = img.shape 17 | 18 | M = np.float32([[1,0,100],[0,1,50]]) 19 | dst = cv2.warpAffine(img,M,(cols,rows)) 20 | 21 | cv2.imshow('img',dst) 22 | cv2.waitKey(0) 23 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/3.3.Rotation.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Rotation 4 | # ============================================================================= 5 | Rotation of an image for an angle \theta is achieved by the transformation matrix 6 | 7 | To find this transformation matrix, OpenCV provides a function, cv2.getRotationMatrix2D. 8 | Check below example which rotates the image by 90 degree with respect to center without any scaling. 9 | ''' 10 | 11 | import cv2 12 | import numpy as np 13 | 14 | img = cv2.imread('messi5.jpg',0) 15 | rows,cols = img.shape 16 | 17 | M = cv2.getRotationMatrix2D((cols/2,rows/2),90,1) 18 | dst = cv2.warpAffine(img,M,(cols,rows)) 19 | 20 | cv2.imshow('img',dst) 21 | cv2.waitKey(0) 22 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/4.Filtering.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # Filtreleme 4 | # ============================================================================= 5 | Filtreleme operasyonu görüntü işlemede en çok gerçekleştirilen operasyonlardan biridir. 6 | Bu operasyonlar iki boyutlu görüntü dizimizdeki her piksel ve çevresindeki pikseller için tanımlanırlar. 7 | Filtreleme operasyonlarının büyük çoğunluğu bir pikselin ve çevresindeki komşu piksellerin uygun başka bir 8 | matrisle çarpılması ile gerçekleştirler. Bu matrise kernel ismi verilir. 9 | 10 | # ============================================================================= 11 | # Motivasyon: "Gürültü" 12 | # ============================================================================= 13 | Gerek ağırlıklı ortalama filtresinde gerek ortanca değer filtresinde amaç "genelde" 14 | bir resim üzerindeki gürültüyü yok etmektir. 15 | Gürültü bir sinyal bir kanal üzerinde aktarılırken, çevredeki etkenlerin altında oluşan istenmeyen değişimlerdir. 16 | Gürültü kavramına günlük hayattan bir örnek olarak telefon konuşmalarındaki cızırtı seslerini verebiliriz. 17 | ''' 18 | 19 | 20 | ''' 21 | # ============================================================================= 22 | # 1.Gaussian Noise(Gauss Dağılımına Sahip Gürültü) 23 | # ============================================================================= 24 | Gauss gürültü -beyaz gürültü de denir- en çok uğraştığımız gürültü tipidir. 25 | Bir sinyal(ses veya görüntü) Gauss gürültüye sahip dendiğinde kastedilen, 26 | sinyalin olması gerekenden belirli bir Gauss fonksiyonu cinsinden bir hata payı ölçüsünde uzaklaşmış olduğudur. 27 | Bu hata payı gürültüyü oluşturan Gauss fonksiyonunun sigma(σ) parametresine bağlıdır. 28 | ''' 29 | 30 | ''' 31 | # ============================================================================= 32 | # Impulsive Noise(Ani Çıkış Yapan Gürültü) 33 | # ============================================================================= 34 | Ani çıkış yapan gürültülerde sinyal belirli bir trende sahiptir fakat çok ani 35 | alakasız değişikliklere maruz kalmıştır. 36 | ''' 37 | 38 | import cv2 39 | import numpy as np 40 | from matplotlib import pyplot as plt 41 | 42 | img = cv2.imread('filter2.jpg') 43 | 44 | blur1 = cv2.blur(img,(5,5)) 45 | blur2 = cv2.GaussianBlur(img,(5,5),0) 46 | blur3 = cv2.medianBlur(img,5) 47 | 48 | 49 | # Goruntu Ekraninin isimleri ve Degiskenleri Atanir# 50 | titles = ['Original Image','Blur','GaussianBlur','medianBlur'] 51 | images = [img, blur1, blur2, blur3] 52 | 53 | # Ayni Ekranda Thresholdlar Gozlenir# 54 | for i in range(4): 55 | plt.subplot(2,2,i+1),plt.imshow(images[i],'gray') 56 | plt.title(titles[i]) 57 | plt.xticks([]),plt.yticks([]) 58 | 59 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/5.1.CannyKenarBulmaAlgoritmasi.py: -------------------------------------------------------------------------------- 1 | ''' 2 | John F. Canny tarafından 1986'da geliştirildi. Çok aşamalı bir algoritması bulunmaktadır. 3 | 4 | 1) Gürültü Azaltma (Noise Reduction) 5 | Canny Kenar algılama algoritması çok hassas çalıştığından görüntüdeki istenmeyen gürültüleride 6 | kenar olarak algılayabilir.Bunun için yapılması gereken ilk adım "Gaussian Filtresi" uygulanarak 7 | resimdeki istenmeyen gürültülerin kaldırılmasıdır. 8 | 9 | 2) Görüntünün Yoğunluk Derecesini Bulma (Finding Intensity Gradient of the Image) 10 | Filtre uygulanarak düzeltilmiş resim yatay yönde(Gx) ve dikey yönde (Gy) türevler elde edilmesi 11 | için "Sobel" kerneliyle süzülür. 12 | 13 | 3) Maksimum Bastırma (Non-maximum Suppression) 14 | Eğim büyüklüğü ve yönü alındıktan sonra kenar oluşturmayan,istenmeyen pikselleri kaldırmak için 15 | görüntünün tam bir taraması yapılır.Bunun için her bir pikselin eğim yönündeki alanında yer 16 | maksimumluğu kontrol edilir. 17 | 18 | 19 | 4) Histerisiz Eşikleme (Hysteresis Thresholding) 20 | Bu noktada tüm kenarların gerçekten kenar olup olmadığına karar verilir.Bunun için iki eşik 21 | değeri olan "minVal" ve "maxVal" ihtiyaç duyulur.Yoğunluk Gradiantı maxVal'dan daha büyük olan 22 | kenarlar kesinlikle kenar olarak kabul edilir.Yoğunluk Gradiantı minVal'den küçük olan kenarlar 23 | ''' 24 | 25 | 26 | import cv2 27 | import numpy as np 28 | from matplotlib import pyplot as plt 29 | 30 | img = cv2.imread('messi5.jpg',0) 31 | edges = cv2.Canny(img,100,200) 32 | 33 | plt.subplot(121),plt.imshow(img,cmap = 'gray') 34 | plt.title('Original Image'), plt.xticks([]), plt.yticks([]) 35 | plt.subplot(122),plt.imshow(edges,cmap = 'gray') 36 | plt.title('Edge Image'), plt.xticks([]), plt.yticks([]) 37 | 38 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/5.ImageGradient-KenarBulma.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Bir görsel üzerinde X ve Y eksenleri doğrultusunda çeşitli filtreler kullanılarak 3 | görsel gradyanları (image gradients) bulunabilir. Bu iş için en çok kullanılan filtreler 4 | 5 | - Robinson, 6 | - Sobel, 7 | - Kirsch, 8 | - Scharr filtreleridir. 9 | 10 | OpenCV üzerinde bir görsel için herhangi bir kernel yürütmek istediğimizde filter2D fonksiyonunu kullanırız. 11 | ''' 12 | 13 | import cv2 14 | import numpy as np 15 | import matplotlib.pyplot as plt 16 | 17 | ''' 18 | Robinson Kerneli 19 | Robinson matrisi yönlü gradyanları bulmak için akla gelen en temel kerneldir. 20 | ''' 21 | kernel_x_Robinson = np.array( 22 | [ 23 | [-1, 0, 1], 24 | [-1, 0, 1], 25 | [-1, 0, 1] 26 | ] 27 | ) 28 | 29 | ''' 30 | Sobel Kerneli 31 | Sobel genel kullanımda sıkça kendine yer edinmiş bir filtredir. 32 | ''' 33 | kernel_x_Sobel = np.array( 34 | [ 35 | [-1, 0, 1], 36 | [-2, 0, 2], 37 | [-1, 0, 1] 38 | ] 39 | ) 40 | 41 | 42 | ''' 43 | Kirsch Kerneli 44 | Kirsch köşe bulma algoritmalarında sıkça kullanılır. 45 | ''' 46 | kernel_x_Kirsch = np.array( 47 | [ 48 | [-3, 0, 3], 49 | [-5, 0, 5], 50 | [-3, 0, 3] 51 | ] 52 | ) 53 | 54 | 55 | ''' 56 | Scharr Kerneli 57 | Scharr, Sobel’in geliştirilmiş halidir. 58 | ''' 59 | 60 | kernel_x_Scharr = np.array( 61 | [ 62 | [-3, 0, 3], 63 | [-10, 0, 10], 64 | [-3, 0, 3] 65 | ] 66 | ) 67 | 68 | 69 | img = cv2.imread("messi5.jpg",cv2.IMREAD_GRAYSCALE) 70 | 71 | convolved_x_Robinson = cv2.filter2D(img, -1, kernel_x_Robinson) 72 | convolved_y_Robinson = cv2.filter2D(img, -1, kernel_x_Robinson.T) 73 | 74 | 75 | convolved_x_Sobel = cv2.filter2D(img, -1, kernel_x_Sobel) 76 | convolved_y_Sobel = cv2.filter2D(img, -1, kernel_x_Sobel.T) 77 | 78 | 79 | convolved_x_Kirsch = cv2.filter2D(img, -1, kernel_x_Kirsch) 80 | convolved_y_Kirsch = cv2.filter2D(img, -1, kernel_x_Kirsch.T) 81 | 82 | 83 | convolved_x_Scharr = cv2.filter2D(img, -1, kernel_x_Scharr) 84 | convolved_y_Scharr = cv2.filter2D(img, -1, kernel_x_Scharr.T) 85 | 86 | 87 | # Goruntu Ekraninin isimleri ve Degiskenleri Atanir# 88 | titles = ['Original Image','Robinson_x','Robinson_y', 89 | 'Original Image','Sobel_x','Sobel_y' 90 | ] 91 | 92 | titles2 = [ 93 | 'Original Image','Kirsch_x','Kirsch_y', 94 | 'Original Image','Scharr_x','Scharr_y' 95 | ] 96 | 97 | images = [img, convolved_x_Robinson, convolved_x_Robinson, 98 | img, convolved_x_Sobel, convolved_y_Sobel 99 | ] 100 | 101 | images2 = [ 102 | img, convolved_x_Kirsch, convolved_y_Kirsch, 103 | img, convolved_x_Scharr, convolved_y_Scharr 104 | ] 105 | 106 | for i in range(6): 107 | plt.subplot(2,3,i+1),plt.imshow(images2[i],'gray') 108 | plt.title(titles2[i]) 109 | plt.xticks([]),plt.yticks([]) 110 | 111 | plt.show() 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/6.1.ContoursShapeMatch.py: -------------------------------------------------------------------------------- 1 | ''' 2 | OpenCV'de iki şeklin veya iki konturun karşılaştırılmasını sağlayan cv2.matchShapes() kullanılır. 3 | Bu komut benzerliği gösteren bir metriği döndürür. 4 | Sonuç ne kadar düşükse karşılaştırma işlemi bir o kadar daha iyi sonuç vermiş anlamına gelmektedir. 5 | 6 | cv2.matchShapes() komutu Hu-moments değerlerine dayanarak hesaplanır. 7 | 8 | 3 farklı resmi kıyaslayalım giriş resimleri ise 2 farklı yıldız ve bir dikdörtgen olsun. 9 | önce aynı resmi birbiriyle kıyaslayarak birebir aynılıkta hangi değeri verdiğini gözleyelim. 10 | Daha sonra ise diğerlerini birbiriyle gözleyelim 11 | 12 | ''' 13 | 14 | import cv2 15 | import numpy as np 16 | 17 | img1 = cv2.imread('yildiz.jpg',0) 18 | img2 = cv2.imread('yildiz.jpg',0) 19 | #img2 = cv2.imread('dikdortgen.jpg',0) 20 | 21 | ret, thresh = cv2.threshold(img1, 127, 255,0) 22 | ret, thresh2 = cv2.threshold(img2, 127, 255,0) 23 | img,contours,hierarchy = cv2.findContours(thresh,2,1) 24 | cnt1 = contours[0] 25 | img1,contours,hierarchy = cv2.findContours(thresh2,2,1) 26 | cnt2 = contours[0] 27 | 28 | ret = cv2.matchShapes(cnt1,cnt2,1,0.0) 29 | print (ret) -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/6.Contours.py: -------------------------------------------------------------------------------- 1 | ''' 2 | # ============================================================================= 3 | # KONTUR NEDİR? 4 | # ============================================================================= 5 | 6 | 7 | Konturlar aynı renk ve yoğunluğa sahip olan tüm kesintisiz noktaları sınır boyunca 8 | birleştiren bir eğri olarak basitçe açıklanabilir.Konturlar şekil analizi,nesne algılama 9 | ve tanıma için çok yararlı bir araçtır. 10 | Kontur bulunması istenirken daha doğru sonuç için binary(siyah-beyaz) formunda resim kullanılmalıdır. 11 | FindContours yöntemiyle konturleri bulunan resim komple değişir orjinal halini bir daha kullanılamaz 12 | hale gelir. Bunun için resimi yazılımda yedeklemeniz gerekmektedir. 13 | OpenCV'de kontur bulma işlemi siyah zeminde beyaz nesne bulmak gibidir.Unutulmamalıdır ki bulunması 14 | gereken nesne beyaz arka plan siyah olmalıdır. 15 | 16 | 17 | cv2.findContours() işleminde konturlar bulunmuştur.Bu işleme kodda bakıldığı zaman 3 argümanın olduğu görülmüştür. 18 | 19 | 1.Birinci argüman kontur bulunacak kaynak görüntüdür. 20 | 2.İkinci argüman kontur alma modudur. 21 | 3.Üçüncü argüman ise kontur yaklaşım metodur. 22 | 23 | Bu işlem sonucu görüntüyü konturu ve hiyerarşiyi ortaya çıkarır. 24 | Koddaki "contours " değişkenine atanan bilgiler aslında görüntüdeki konturların pythondaki bir listesidir. 25 | ''' 26 | 27 | 28 | import numpy as np 29 | import cv2 30 | 31 | im = cv2.imread('kare.png') 32 | cv2.imshow('Orjinal resim',im) 33 | 34 | imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 35 | ret,thresh = cv2.threshold(imgray,127,255,1) 36 | cv2.imshow('thresh',thresh) 37 | 38 | img,contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 39 | img = cv2.drawContours(im, contours,-1, (255,0,0), 1) 40 | cv2.imshow('para',img) 41 | 42 | cv2.waitKey(0) 43 | cv2.destroyAllWindows() 44 | 45 | 46 | ''' 47 | # ============================================================================= 48 | # KONTURLARI ÇİZMEK? 49 | # ============================================================================= 50 | 51 | Konturlar cv2.drawContours() fonksiyonu ile çizdirilir.Bu fonkisyonda ilk argüman kaynak görüntü, 52 | ikinci argüman görüntüdeki konturların python listesi,üçüncü argüman konturların indeksi ,dördüncü 53 | argüman çizimin rengi ve beşinci argüman çizimin kalınlığıdır. 54 | 55 | Bir resimdeki bütün konturları çizdirmek için; 56 | 57 | img = cv2.drawContours(img, contours, -1, (0,255,0), 3) 58 | 59 | Tek bir kontur çizilmek istenirse örneğin 4. kontür; 60 | cnt = contours[4] 61 | img = cv2.drawContours(img, [cnt], 0, (0,255,0), 3) 62 | 63 | ''' -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/7.TemplateMatching.py: -------------------------------------------------------------------------------- 1 | ''' 2 | ''' 3 | 4 | 5 | import cv2 6 | import numpy as np 7 | from matplotlib import pyplot as plt 8 | 9 | img = cv2.imread('messi5.jpg',0) 10 | img2 = img.copy() 11 | template = cv2.imread('template.jpg',0) 12 | w, h = template.shape[::-1] 13 | 14 | # All the 6 methods for comparison in a list 15 | methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR', 16 | 'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED'] 17 | 18 | for meth in methods: 19 | img = img2.copy() 20 | method = eval(meth) 21 | 22 | # Apply template Matching 23 | res = cv2.matchTemplate(img,template,method) 24 | min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) 25 | 26 | # If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum 27 | if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]: 28 | top_left = min_loc 29 | else: 30 | top_left = max_loc 31 | bottom_right = (top_left[0] + w, top_left[1] + h) 32 | 33 | cv2.rectangle(img,top_left, bottom_right, 255, 2) 34 | 35 | plt.subplot(121),plt.imshow(res,cmap = 'gray') 36 | plt.title('Matching Result'), plt.xticks([]), plt.yticks([]) 37 | plt.subplot(122),plt.imshow(img,cmap = 'gray') 38 | plt.title('Detected Point'), plt.xticks([]), plt.yticks([]) 39 | plt.suptitle(meth) 40 | 41 | plt.show() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/8.BackgroundSubtractor.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Basics 3 | Background subtraction is a major preprocessing steps in many vision based applications. 4 | For example, consider the cases like visitor counter where a static camera takes the number of 5 | visitors entering or leaving the room, or a traffic camera extracting information about the vehicles etc. 6 | In all these cases, first you need to extract the person or vehicles alone. 7 | 8 | Technically, you need to extract the moving foreground from static background. 9 | 10 | If you have an image of background alone, like image of the room without visitors, 11 | image of the road without vehicles etc, it is an easy job. Just subtract the new image from the background. 12 | You get the foreground objects alone. But in most of the cases, you may not have such an image, 13 | so we need to extract the background from whatever images we have. It become more complicated 14 | when there is shadow of the vehicles. Since shadow is also moving, simple subtraction will mark that also as foreground. 15 | It complicates things. 16 | 17 | Several algorithms were introduced for this purpose. 18 | ''' 19 | 20 | 21 | import numpy as np 22 | import cv2 23 | 24 | cap = cv2.VideoCapture(0) 25 | 26 | fgbg = cv2.createBackgroundSubtractorMOG2() 27 | 28 | while(1): 29 | ret, frame = cap.read() 30 | 31 | fgmask = fgbg.apply(frame) 32 | 33 | cv2.imshow('frame',fgmask) 34 | k = cv2.waitKey(30) & 0xff 35 | if k == 27: 36 | break 37 | 38 | cap.release() 39 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/dikdortgen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/dikdortgen.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/filter1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/filter1.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/filter2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/filter2.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/kare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/kare.png -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/messi5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/messi5.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/muslera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/muslera.png -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/sudoku-original.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/sudoku-original.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/template.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/template.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/yildiz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/yildiz.jpg -------------------------------------------------------------------------------- /imageprocessing/3.ImageProcessing/yildiz2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/3.ImageProcessing/yildiz2.jpg -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/1.FaceAndEyeDetection.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | face_cascade = cv2.CascadeClassifier('xml/haarcascade_frontalface_default.xml') 5 | eye_cascade = cv2.CascadeClassifier('xml/haarcascade_eye.xml') 6 | 7 | img = cv2.imread('children1.jpg') 8 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 9 | 10 | 11 | faces = face_cascade.detectMultiScale(gray, 1.3, 5) 12 | for (x,y,w,h) in faces: 13 | img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 14 | roi_gray = gray[y:y+h, x:x+w] 15 | roi_color = img[y:y+h, x:x+w] 16 | eyes = eye_cascade.detectMultiScale(roi_gray) 17 | for (ex,ey,ew,eh) in eyes: 18 | cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) 19 | 20 | cv2.imshow('img',img) 21 | cv2.waitKey(0) 22 | cv2.destroyAllWindows() 23 | -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/2.CarCounting.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | 5 | backsub = cv2.createBackgroundSubtractorMOG2() 6 | capture = cv2.VideoCapture("video.avi") 7 | 8 | sayac=0 9 | 10 | 11 | if capture: 12 | 13 | while True: 14 | 15 | ret, frame = capture.read() 16 | 17 | if ret: 18 | fgmask = backsub.apply(frame, None, 0.01) 19 | cv2.line(frame, (50, 0), (50, 300), (0, 255, 0), 2) 20 | cv2.line(frame, (70, 0), (70, 300), (0, 255, 0), 2) 21 | 22 | 23 | im,contours, hierarchy = cv2.findContours(fgmask.copy(), 24 | cv2.RETR_EXTERNAL, 25 | cv2.CHAIN_APPROX_NONE) 26 | try: 27 | hierarchy = hierarchy[0] 28 | except: 29 | hierarchy = [] 30 | for contour, hier in zip(contours, hierarchy): 31 | (x,y,w,h) = cv2.boundingRect(contour) 32 | if w > 40 and h > 40: 33 | cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2) 34 | if x>50 and x<70: 35 | sayac+=1 36 | print(sayac) 37 | 38 | cv2.putText(frame,"Araba: "+str(sayac), (220, 20), cv2.FONT_HERSHEY_SIMPLEX, 39 | 0.6, (0, 0, 0), 2) 40 | 41 | cv2.imshow("Takip", frame) 42 | cv2.imshow("Arka Plan Cikar", fgmask) 43 | 44 | 45 | 46 | key = cv2.waitKey(60) 47 | if key == ord('q'): 48 | break 49 | 50 | capture.release() 51 | cv2.destroyAllWindows() 52 | 53 | -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/3.PeopleCounting.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Wed Jul 4 16:19:10 2018 4 | @author: Akshay Narla 5 | Working well with little error. Can't be tweaked by the user himself. 6 | The Person program can be copied here or be imported according to the requirement. 7 | """ 8 | 9 | import datetime 10 | import numpy as np 11 | import cv2 as cv 12 | import Person 13 | 14 | def nothing(x): 15 | pass 16 | 17 | #video capture 18 | var=cv.VideoCapture('ada.mov') 19 | fgbg = cv.bgsegm.createBackgroundSubtractorMOG() 20 | EntranceCounter= 0 21 | ExitCounter= 0 22 | frame_width= var.get(3) 23 | frame_height= var.get(4) 24 | res = (frame_height * frame_width) 25 | 26 | # Calculate the min and max size of the object 27 | min_areaTH = res / 40 28 | max_areaTH = res / 3 29 | 30 | # Bottom line 31 | bottom = int(3 * (frame_height / 5)) 32 | pt1 = [0, bottom] 33 | pt2 = [frame_width, bottom] 34 | pts_L1 = np.array([pt1, pt2], np.int32) 35 | pts_L1 = pts_L1.reshape((-1, 1, 2)) 36 | bottom_color = (255, 0, 0) 37 | 38 | # Top line 39 | top = int(2*(frame_height / 5)) 40 | pt3 = [0,top] 41 | pt4 = [frame_width, top] 42 | pts_L2 = np.array([pt3, pt4], np.int32) 43 | pts_L2 = pts_L2.reshape((-1, 1, 2)) 44 | top_color = (0, 0, 255) 45 | persons = [] 46 | iteration_counter = 0 47 | now_setting = [1,1,1,1,1] 48 | 49 | ret, mask = var.read() 50 | while (var.isOpened()): 51 | #if grabbed enter loop else break 52 | ret, frame = var.read() 53 | if not ret: 54 | text = "No Video" 55 | break 56 | 57 | #adjusting frame size and blurring 58 | absd = cv.absdiff(frame, mask) 59 | gray= cv.cvtColor(absd,cv.COLOR_BGR2GRAY, cv.CV_8UC1) 60 | resize = cv.GaussianBlur( gray,(21,21),0) 61 | 62 | #background subtraction 63 | fgmask= fgbg.apply(resize) 64 | ret, th3 = cv.threshold(fgmask ,25,200,cv.THRESH_BINARY+cv.THRESH_OTSU) 65 | 66 | #smoothing and filling holes 67 | blur = cv.blur(th3,(5,5)) 68 | kernel = np.ones((5,5),np.uint8) 69 | dil= cv.dilate( blur,kernel,iterations = 1) 70 | 71 | ret, th3 = cv.threshold(dil,0,50,cv.THRESH_BINARY+cv.THRESH_OTSU) 72 | #contours and tracking 73 | im2, contours, hierarchy = cv.findContours(th3.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) 74 | cv.drawContours(im2, contours, -1, (200,50,50), 2) 75 | 76 | #grab all contours and draw rectangles and their centroids in original frame 77 | for c in contours: 78 | area= cv.contourArea(c) 79 | if area> min_areaTH and area= 2: 36 | if self.state == '0': 37 | if self.tracks[-1][1] < mid_end and self.tracks[-2][1] >= mid_end: 38 | self.state = '1' 39 | #self.dir = 'up' 40 | return True 41 | else: 42 | return False 43 | else: 44 | return False 45 | 46 | def DOWN(self,mid_start,mid_end): 47 | if len(self.tracks) >= 2: 48 | if self.state == '0': 49 | if self.tracks[-1][1] > mid_start and self.tracks[-2][1] <= mid_start: 50 | self.state = '1' 51 | #self.dir = 'down' 52 | return True 53 | else: 54 | return False 55 | else: 56 | return False -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/__pycache__/Person.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/4.SimpleApps/__pycache__/Person.cpython-36.pyc -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/children1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/4.SimpleApps/children1.JPG -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/children2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/4.SimpleApps/children2.JPG -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/video.avi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denopas/ImageProcessing/dfcfc752c9f6689b008cfdbe12a1327e4fbf1a65/imageprocessing/4.SimpleApps/video.avi -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/xml/haarcascade_licence_plate_rus_16stages.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 64 16 7 | 8 | <_> 9 | 10 | 11 | <_> 12 | 13 | <_> 14 | 15 | 16 | 17 | <_> 18 | 32 2 8 6 -1. 19 | <_> 20 | 32 4 8 2 3. 21 | 0 22 | 1.6915600746870041e-002 23 | -9.5547717809677124e-001 24 | 8.9129137992858887e-001 25 | <_> 26 | 27 | <_> 28 | 29 | 30 | 31 | <_> 32 | 0 4 6 10 -1. 33 | <_> 34 | 3 4 3 10 2. 35 | 0 36 | 2.4228349328041077e-002 37 | -9.2089319229125977e-001 38 | 8.8723921775817871e-001 39 | <_> 40 | 41 | <_> 42 | 43 | 44 | 45 | <_> 46 | 55 0 8 6 -1. 47 | <_> 48 | 55 0 4 3 2. 49 | <_> 50 | 59 3 4 3 2. 51 | 0 52 | -1.0168660432100296e-002 53 | 8.8940089941024780e-001 54 | -7.7847331762313843e-001 55 | <_> 56 | 57 | <_> 58 | 59 | 60 | 61 | <_> 62 | 44 7 4 9 -1. 63 | <_> 64 | 44 10 4 3 3. 65 | 0 66 | 2.0863260142505169e-003 67 | -8.7998157739639282e-001 68 | 5.8651781082153320e-001 69 | -2.0683259963989258e+000 70 | -1 71 | -1 72 | <_> 73 | 74 | 75 | <_> 76 | 77 | <_> 78 | 79 | 80 | 81 | <_> 82 | 29 1 16 4 -1. 83 | <_> 84 | 29 3 16 2 2. 85 | 0 86 | 2.9062159359455109e-002 87 | -8.7765061855316162e-001 88 | 8.5373121500015259e-001 89 | <_> 90 | 91 | <_> 92 | 93 | 94 | 95 | <_> 96 | 0 5 9 8 -1. 97 | <_> 98 | 3 5 3 8 3. 99 | 0 100 | 2.3903399705886841e-002 101 | -9.2079448699951172e-001 102 | 7.5155001878738403e-001 103 | <_> 104 | 105 | <_> 106 | 107 | 108 | 109 | <_> 110 | 44 0 20 14 -1. 111 | <_> 112 | 44 0 10 7 2. 113 | <_> 114 | 54 7 10 7 2. 115 | 0 116 | -3.5404648631811142e-002 117 | 6.7834627628326416e-001 118 | -9.0937072038650513e-001 119 | <_> 120 | 121 | <_> 122 | 123 | 124 | 125 | <_> 126 | 41 7 6 9 -1. 127 | <_> 128 | 43 7 2 9 3. 129 | 0 130 | 6.2988721765577793e-003 131 | -8.1054258346557617e-001 132 | 5.8985030651092529e-001 133 | <_> 134 | 135 | <_> 136 | 137 | 138 | 139 | <_> 140 | 0 4 21 4 -1. 141 | <_> 142 | 7 4 7 4 3. 143 | 0 144 | 3.4959490876644850e-003 145 | -9.7632282972335815e-001 146 | 4.5473039150238037e-001 147 | -1.6632349491119385e+000 148 | 0 149 | -1 150 | <_> 151 | 152 | 153 | <_> 154 | 155 | <_> 156 | 157 | 158 | 159 | <_> 160 | 31 2 11 6 -1. 161 | <_> 162 | 31 4 11 2 3. 163 | 0 164 | 2.3864099755883217e-002 165 | -9.3137168884277344e-001 166 | 8.2478952407836914e-001 167 | <_> 168 | 169 | <_> 170 | 171 | 172 | 173 | <_> 174 | 56 3 6 11 -1. 175 | <_> 176 | 59 3 3 11 2. 177 | 0 178 | -2.5775209069252014e-002 179 | 8.5526448488235474e-001 180 | -8.7574672698974609e-001 181 | <_> 182 | 183 | <_> 184 | 185 | 186 | 187 | <_> 188 | 32 14 32 2 -1. 189 | <_> 190 | 32 15 32 1 2. 191 | 0 192 | -1.0646049864590168e-002 193 | 8.5167151689529419e-001 194 | -6.7789041996002197e-001 195 | <_> 196 | 197 | <_> 198 | 199 | 200 | 201 | <_> 202 | 0 2 8 14 -1. 203 | <_> 204 | 4 2 4 14 2. 205 | 0 206 | 2.7000989764928818e-002 207 | -8.0041092634201050e-001 208 | 6.4893317222595215e-001 209 | <_> 210 | 211 | <_> 212 | 213 | 214 | 215 | <_> 216 | 19 0 22 6 -1. 217 | <_> 218 | 19 0 11 3 2. 219 | <_> 220 | 30 3 11 3 2. 221 | 0 222 | 5.2989721298217773e-003 223 | -9.5342522859573364e-001 224 | 5.0140267610549927e-001 225 | -1.3346730470657349e+000 226 | 1 227 | -1 228 | <_> 229 | 230 | 231 | <_> 232 | 233 | <_> 234 | 235 | 236 | 237 | <_> 238 | 56 0 6 6 -1. 239 | <_> 240 | 56 0 3 3 2. 241 | <_> 242 | 59 3 3 3 2. 243 | 0 244 | -6.9233630783855915e-003 245 | 8.2654470205307007e-001 246 | -8.5396027565002441e-001 247 | <_> 248 | 249 | <_> 250 | 251 | 252 | 253 | <_> 254 | 32 0 14 12 -1. 255 | <_> 256 | 32 0 7 6 2. 257 | <_> 258 | 39 6 7 6 2. 259 | 0 260 | 1.2539249658584595e-001 261 | -1.2996139936149120e-002 262 | -3.2377028808593750e+003 263 | <_> 264 | 265 | <_> 266 | 267 | 268 | 269 | <_> 270 | 2 1 43 4 -1. 271 | <_> 272 | 2 3 43 2 2. 273 | 0 274 | 6.3474893569946289e-002 275 | -6.4648061990737915e-001 276 | 8.2302427291870117e-001 277 | <_> 278 | 279 | <_> 280 | 281 | 282 | 283 | <_> 284 | 34 10 30 5 -1. 285 | <_> 286 | 44 10 10 5 3. 287 | 0 288 | 4.2217150330543518e-002 289 | -7.5190877914428711e-001 290 | 6.3705182075500488e-001 291 | <_> 292 | 293 | <_> 294 | 295 | 296 | 297 | <_> 298 | 0 9 9 5 -1. 299 | <_> 300 | 3 9 3 5 3. 301 | 0 302 | 2.0000640302896500e-002 303 | -6.2077498435974121e-001 304 | 6.1317932605743408e-001 305 | -1.6521669626235962e+000 306 | 2 307 | -1 308 | <_> 309 | 310 | 311 | <_> 312 | 313 | <_> 314 | 315 | 316 | 317 | <_> 318 | 2 1 43 6 -1. 319 | <_> 320 | 2 3 43 2 3. 321 | 0 322 | 9.2297486960887909e-002 323 | -7.2764229774475098e-001 324 | 8.0554759502410889e-001 325 | <_> 326 | 327 | <_> 328 | 329 | 330 | 331 | <_> 332 | 53 4 9 8 -1. 333 | <_> 334 | 56 4 3 8 3. 335 | 0 336 | 2.7613969519734383e-002 337 | -7.0769268274307251e-001 338 | 7.3315787315368652e-001 339 | <_> 340 | 341 | <_> 342 | 343 | 344 | 345 | <_> 346 | 36 4 14 8 -1. 347 | <_> 348 | 36 4 7 4 2. 349 | <_> 350 | 43 8 7 4 2. 351 | 0 352 | 1.2465449981391430e-002 353 | -8.4359270334243774e-001 354 | 5.7046437263488770e-001 355 | <_> 356 | 357 | <_> 358 | 359 | 360 | 361 | <_> 362 | 14 14 49 2 -1. 363 | <_> 364 | 14 15 49 1 2. 365 | 0 366 | -2.3886829614639282e-002 367 | 8.2656508684158325e-001 368 | -5.2783298492431641e-001 369 | -1.4523630142211914e+000 370 | 3 371 | -1 372 | <_> 373 | 374 | 375 | <_> 376 | 377 | <_> 378 | 379 | 380 | 381 | <_> 382 | 0 5 4 9 -1. 383 | <_> 384 | 2 5 2 9 2. 385 | 0 386 | 1.8821349367499352e-002 387 | -8.1122857332229614e-001 388 | 6.9127470254898071e-001 389 | <_> 390 | 391 | <_> 392 | 393 | 394 | 395 | <_> 396 | 21 1 38 4 -1. 397 | <_> 398 | 21 3 38 2 2. 399 | 0 400 | 6.1703320592641830e-002 401 | -7.6482647657394409e-001 402 | 6.4212161302566528e-001 403 | <_> 404 | 405 | <_> 406 | 407 | 408 | 409 | <_> 410 | 44 12 18 3 -1. 411 | <_> 412 | 53 12 9 3 2. 413 | 0 414 | -1.6298670321702957e-002 415 | 5.0207728147506714e-001 416 | -8.4020161628723145e-001 417 | <_> 418 | 419 | <_> 420 | 421 | 422 | 423 | <_> 424 | 10 4 9 3 -1. 425 | <_> 426 | 13 4 3 3 3. 427 | 0 428 | -4.9458951689302921e-003 429 | 6.1991941928863525e-001 430 | -6.1633539199829102e-001 431 | <_> 432 | 433 | <_> 434 | 435 | 436 | 437 | <_> 438 | 40 4 10 4 -1. 439 | <_> 440 | 45 4 5 4 2. 441 | 0 442 | -5.1894597709178925e-003 443 | 4.4975179433822632e-001 444 | -8.0651968717575073e-001 445 | <_> 446 | 447 | <_> 448 | 449 | 450 | 451 | <_> 452 | 17 14 47 2 -1. 453 | <_> 454 | 17 15 47 1 2. 455 | 0 456 | -1.8824130296707153e-002 457 | 6.1992841958999634e-001 458 | -5.5643159151077271e-001 459 | <_> 460 | 461 | <_> 462 | 463 | 464 | 465 | <_> 466 | 8 5 4 7 -1. 467 | <_> 468 | 10 5 2 7 2. 469 | 0 470 | 5.6571601890027523e-003 471 | -4.8346561193466187e-001 472 | 6.8647360801696777e-001 473 | -2.2358059883117676e+000 474 | 4 475 | -1 476 | <_> 477 | 478 | 479 | <_> 480 | 481 | <_> 482 | 483 | 484 | 485 | <_> 486 | 56 0 6 6 -1. 487 | <_> 488 | 56 0 3 3 2. 489 | <_> 490 | 59 3 3 3 2. 491 | 0 492 | -9.1503243893384933e-003 493 | 6.8174481391906738e-001 494 | -7.7866071462631226e-001 495 | <_> 496 | 497 | <_> 498 | 499 | 500 | 501 | <_> 502 | 0 0 6 6 -1. 503 | <_> 504 | 0 0 3 3 2. 505 | <_> 506 | 3 3 3 3 2. 507 | 0 508 | 7.4933180585503578e-003 509 | -6.8696027994155884e-001 510 | 6.6913938522338867e-001 511 | <_> 512 | 513 | <_> 514 | 515 | 516 | 517 | <_> 518 | 13 4 48 2 -1. 519 | <_> 520 | 29 4 16 2 3. 521 | 0 522 | 4.5296419411897659e-002 523 | -7.3576509952545166e-001 524 | 5.9453499317169189e-001 525 | <_> 526 | 527 | <_> 528 | 529 | 530 | 531 | <_> 532 | 42 1 6 15 -1. 533 | <_> 534 | 42 6 6 5 3. 535 | 0 536 | 1.1669679544866085e-002 537 | -8.4733831882476807e-001 538 | 4.5461329817771912e-001 539 | <_> 540 | 541 | <_> 542 | 543 | 544 | 545 | <_> 546 | 30 8 3 5 -1. 547 | <_> 548 | 31 8 1 5 3. 549 | 0 550 | 2.5769430212676525e-003 551 | -5.8270388841629028e-001 552 | 7.7900522947311401e-001 553 | <_> 554 | 555 | <_> 556 | 557 | 558 | 559 | <_> 560 | 55 10 8 6 -1. 561 | <_> 562 | 55 13 8 3 2. 563 | 0 564 | -1.4139170525595546e-003 565 | 4.5126929879188538e-001 566 | -9.0696328878402710e-001 567 | -1.8782069683074951e+000 568 | 5 569 | -1 570 | <_> 571 | 572 | 573 | <_> 574 | 575 | <_> 576 | 577 | 578 | 579 | <_> 580 | 4 6 4 7 -1. 581 | <_> 582 | 6 6 2 7 2. 583 | 0 584 | -5.3149578161537647e-003 585 | 6.5218788385391235e-001 586 | -7.9464268684387207e-001 587 | <_> 588 | 589 | <_> 590 | 591 | 592 | 593 | <_> 594 | 56 3 6 8 -1. 595 | <_> 596 | 59 3 3 8 2. 597 | 0 598 | -2.2906960919499397e-002 599 | 6.6433382034301758e-001 600 | -7.3633247613906860e-001 601 | <_> 602 | 603 | <_> 604 | 605 | 606 | 607 | <_> 608 | 37 2 4 6 -1. 609 | <_> 610 | 37 4 4 2 3. 611 | 0 612 | 9.4887977465987206e-003 613 | -8.2612031698226929e-001 614 | 4.9333500862121582e-001 615 | <_> 616 | 617 | <_> 618 | 619 | 620 | 621 | <_> 622 | 0 10 30 6 -1. 623 | <_> 624 | 0 12 30 2 3. 625 | 0 626 | 4.5138411223888397e-002 627 | -5.4704028367996216e-001 628 | 7.6927912235260010e-001 629 | <_> 630 | 631 | <_> 632 | 633 | 634 | 635 | <_> 636 | 0 4 21 12 -1. 637 | <_> 638 | 7 4 7 12 3. 639 | 0 640 | 2.5049019604921341e-002 641 | -8.6739641427993774e-001 642 | 5.2807968854904175e-001 643 | -1.0597369670867920e+000 644 | 6 645 | -1 646 | <_> 647 | 648 | 649 | <_> 650 | 651 | <_> 652 | 653 | 654 | 655 | <_> 656 | 44 0 1 14 -1. 657 | <_> 658 | 44 7 1 7 2. 659 | 0 660 | 6.6414438188076019e-003 661 | -7.7290147542953491e-001 662 | 6.9723731279373169e-001 663 | <_> 664 | 665 | <_> 666 | 667 | 668 | 669 | <_> 670 | 54 3 4 3 -1. 671 | <_> 672 | 56 3 2 3 2. 673 | 0 674 | 2.4703629314899445e-003 675 | -7.4289917945861816e-001 676 | 6.6825848817825317e-001 677 | <_> 678 | 679 | <_> 680 | 681 | 682 | 683 | <_> 684 | 32 0 30 6 -1. 685 | <_> 686 | 32 0 15 3 2. 687 | <_> 688 | 47 3 15 3 2. 689 | 0 690 | -2.2910499945282936e-002 691 | 4.3986389040946960e-001 692 | -9.0588808059692383e-001 693 | <_> 694 | 695 | <_> 696 | 697 | 698 | 699 | <_> 700 | 0 8 9 7 -1. 701 | <_> 702 | 3 8 3 7 3. 703 | 0 704 | 3.4193221479654312e-002 705 | -6.9507479667663574e-001 706 | 6.2501090764999390e-001 707 | <_> 708 | 709 | <_> 710 | 711 | 712 | 713 | <_> 714 | 30 10 3 3 -1. 715 | <_> 716 | 31 10 1 3 3. 717 | 0 718 | 1.5060020377859473e-003 719 | -6.8670761585235596e-001 720 | 8.2241541147232056e-001 721 | <_> 722 | 723 | <_> 724 | 725 | 726 | 727 | <_> 728 | 21 3 24 4 -1. 729 | <_> 730 | 29 3 8 4 3. 731 | 0 732 | 1.9838380467263050e-005 733 | -9.2727631330490112e-001 734 | 6.4723730087280273e-001 735 | <_> 736 | 737 | <_> 738 | 739 | 740 | 741 | <_> 742 | 42 3 12 6 -1. 743 | <_> 744 | 46 3 4 6 3. 745 | 0 746 | -2.2170299416757189e-005 747 | 5.6555831432342529e-001 748 | -9.6788132190704346e-001 749 | -1.4993519783020020e+000 750 | 7 751 | -1 752 | <_> 753 | 754 | 755 | <_> 756 | 757 | <_> 758 | 759 | 760 | 761 | <_> 762 | 56 9 6 6 -1. 763 | <_> 764 | 59 9 3 6 2. 765 | 0 766 | -1.1395259760320187e-002 767 | 7.1383631229400635e-001 768 | -8.7429678440093994e-001 769 | <_> 770 | 771 | <_> 772 | 773 | 774 | 775 | <_> 776 | 6 4 1 6 -1. 777 | <_> 778 | 6 7 1 3 2. 779 | 0 780 | -2.1864590235054493e-003 781 | 8.5311782360076904e-001 782 | -6.4777731895446777e-001 783 | <_> 784 | 785 | <_> 786 | 787 | 788 | 789 | <_> 790 | 0 0 12 4 -1. 791 | <_> 792 | 0 0 6 2 2. 793 | <_> 794 | 6 2 6 2 2. 795 | 0 796 | 2.3193720262497663e-003 797 | -7.6411879062652588e-001 798 | 7.1867972612380981e-001 799 | <_> 800 | 801 | <_> 802 | 803 | 804 | 805 | <_> 806 | 43 12 18 2 -1. 807 | <_> 808 | 52 12 9 2 2. 809 | 0 810 | -7.9916073009371758e-003 811 | 6.6442942619323730e-001 812 | -7.9540950059890747e-001 813 | <_> 814 | 815 | <_> 816 | 817 | 818 | 819 | <_> 820 | 9 5 2 8 -1. 821 | <_> 822 | 10 5 1 8 2. 823 | 0 824 | 1.4212740352377295e-003 825 | -6.3904231786727905e-001 826 | 7.5050598382949829e-001 827 | -8.4829801321029663e-001 828 | 8 829 | -1 830 | <_> 831 | 832 | 833 | <_> 834 | 835 | <_> 836 | 837 | 838 | 839 | <_> 840 | 1 9 6 3 -1. 841 | <_> 842 | 3 9 2 3 3. 843 | 0 844 | 6.4091659151017666e-003 845 | -8.8425230979919434e-001 846 | 9.9953681230545044e-001 847 | <_> 848 | 849 | <_> 850 | 851 | 852 | 853 | <_> 854 | 56 8 2 8 -1. 855 | <_> 856 | 56 12 2 4 2. 857 | 0 858 | -6.3316390151157975e-004 859 | 8.3822172880172729e-001 860 | -9.8322170972824097e-001 861 | <_> 862 | 863 | <_> 864 | 865 | 866 | 867 | <_> 868 | 24 2 6 13 -1. 869 | <_> 870 | 26 2 2 13 3. 871 | 0 872 | -6.4947169448714703e-005 873 | 1. 874 | -9.1822808980941772e-001 875 | <_> 876 | 877 | <_> 878 | 879 | 880 | 881 | <_> 882 | 33 7 24 4 -1. 883 | <_> 884 | 41 7 8 4 3. 885 | 0 886 | 5.3404141217470169e-003 887 | -9.4317251443862915e-001 888 | 9.0425151586532593e-001 889 | -6.0007210820913315e-002 890 | 9 891 | -1 892 | <_> 893 | 894 | 895 | <_> 896 | 897 | <_> 898 | 899 | 900 | 901 | <_> 902 | 1 1 57 4 -1. 903 | <_> 904 | 1 3 57 2 2. 905 | 0 906 | 1.0755469650030136e-001 907 | -7.1647202968597412e-001 908 | 8.7827038764953613e-001 909 | <_> 910 | 911 | <_> 912 | 913 | 914 | 915 | <_> 916 | 0 2 6 14 -1. 917 | <_> 918 | 3 2 3 14 2. 919 | 0 920 | 3.1668949872255325e-002 921 | -8.7051069736480713e-001 922 | 5.8807212114334106e-001 923 | <_> 924 | 925 | <_> 926 | 927 | 928 | 929 | <_> 930 | 52 3 6 10 -1. 931 | <_> 932 | 54 3 2 10 3. 933 | 0 934 | -1.0572380386292934e-002 935 | 6.2438100576400757e-001 936 | -7.4027371406555176e-001 937 | <_> 938 | 939 | <_> 940 | 941 | 942 | 943 | <_> 944 | 1 14 61 2 -1. 945 | <_> 946 | 1 15 61 1 2. 947 | 0 948 | -2.7396259829401970e-002 949 | 8.9776748418807983e-001 950 | -5.2986758947372437e-001 951 | <_> 952 | 953 | <_> 954 | 955 | 956 | 957 | <_> 958 | 28 0 11 12 -1. 959 | <_> 960 | 28 4 11 4 3. 961 | 0 962 | 2.5918649509549141e-002 963 | -8.6482518911361694e-001 964 | 5.3121817111968994e-001 965 | -9.6125108003616333e-001 966 | 10 967 | -1 968 | <_> 969 | 970 | 971 | <_> 972 | 973 | <_> 974 | 975 | 976 | 977 | <_> 978 | 22 1 41 4 -1. 979 | <_> 980 | 22 3 41 2 2. 981 | 0 982 | 7.1039132773876190e-002 983 | -7.5719678401947021e-001 984 | 7.5645631551742554e-001 985 | <_> 986 | 987 | <_> 988 | 989 | 990 | 991 | <_> 992 | 41 6 6 8 -1. 993 | <_> 994 | 43 6 2 8 3. 995 | 0 996 | 7.6241148635745049e-003 997 | -7.9783838987350464e-001 998 | 7.1733069419860840e-001 999 | <_> 1000 | 1001 | <_> 1002 | 1003 | 1004 | 1005 | <_> 1006 | 50 9 14 5 -1. 1007 | <_> 1008 | 57 9 7 5 2. 1009 | 0 1010 | -2.7092639356851578e-002 1011 | 6.0071170330047607e-001 1012 | -8.4794402122497559e-001 1013 | <_> 1014 | 1015 | <_> 1016 | 1017 | 1018 | 1019 | <_> 1020 | 4 1 12 5 -1. 1021 | <_> 1022 | 10 1 6 5 2. 1023 | 0 1024 | -8.1267888890579343e-004 1025 | 5.9364068508148193e-001 1026 | -8.9295238256454468e-001 1027 | <_> 1028 | 1029 | <_> 1030 | 1031 | 1032 | 1033 | <_> 1034 | 37 9 3 3 -1. 1035 | <_> 1036 | 38 9 1 3 3. 1037 | 0 1038 | 8.3705072756856680e-004 1039 | -6.4887362718582153e-001 1040 | 7.8537952899932861e-001 1041 | -1.0618970394134521e+000 1042 | 11 1043 | -1 1044 | <_> 1045 | 1046 | 1047 | <_> 1048 | 1049 | <_> 1050 | 1051 | 1052 | 1053 | <_> 1054 | 54 0 10 6 -1. 1055 | <_> 1056 | 54 0 5 3 2. 1057 | <_> 1058 | 59 3 5 3 2. 1059 | 0 1060 | -9.7556859254837036e-003 1061 | 7.6982218027114868e-001 1062 | -8.5293501615524292e-001 1063 | <_> 1064 | 1065 | <_> 1066 | 1067 | 1068 | 1069 | <_> 1070 | 47 0 6 11 -1. 1071 | <_> 1072 | 49 0 2 11 3. 1073 | 0 1074 | -8.6617246270179749e-003 1075 | 8.4029090404510498e-001 1076 | -7.1949690580368042e-001 1077 | <_> 1078 | 1079 | <_> 1080 | 1081 | 1082 | 1083 | <_> 1084 | 19 2 20 2 -1. 1085 | <_> 1086 | 19 3 20 1 2. 1087 | 0 1088 | 1.6897840425372124e-002 1089 | -5.3601992130279541e-001 1090 | 9.5484441518783569e-001 1091 | <_> 1092 | 1093 | <_> 1094 | 1095 | 1096 | 1097 | <_> 1098 | 14 4 6 11 -1. 1099 | <_> 1100 | 17 4 3 11 2. 1101 | 0 1102 | 4.7526158596156165e-005 1103 | -7.6412862539291382e-001 1104 | 7.5398761034011841e-001 1105 | <_> 1106 | 1107 | <_> 1108 | 1109 | 1110 | 1111 | <_> 1112 | 31 9 33 2 -1. 1113 | <_> 1114 | 42 9 11 2 3. 1115 | 0 1116 | 6.5607670694589615e-003 1117 | -9.9346441030502319e-001 1118 | 6.4864277839660645e-001 1119 | -7.3307347297668457e-001 1120 | 12 1121 | -1 1122 | <_> 1123 | 1124 | 1125 | <_> 1126 | 1127 | <_> 1128 | 1129 | 1130 | 1131 | <_> 1132 | 6 1 53 6 -1. 1133 | <_> 1134 | 6 3 53 2 3. 1135 | 0 1136 | 1.0103269666433334e-001 1137 | -7.3275578022003174e-001 1138 | 8.4619927406311035e-001 1139 | <_> 1140 | 1141 | <_> 1142 | 1143 | 1144 | 1145 | <_> 1146 | 49 9 4 6 -1. 1147 | <_> 1148 | 49 9 2 3 2. 1149 | <_> 1150 | 51 12 2 3 2. 1151 | 0 1152 | -2.8920811018906534e-004 1153 | 7.1564781665802002e-001 1154 | -8.8221758604049683e-001 1155 | <_> 1156 | 1157 | <_> 1158 | 1159 | 1160 | 1161 | <_> 1162 | 0 9 30 7 -1. 1163 | <_> 1164 | 10 9 10 7 3. 1165 | 0 1166 | 1.0838840156793594e-002 1167 | -8.7420248985290527e-001 1168 | 6.0648679733276367e-001 1169 | <_> 1170 | 1171 | <_> 1172 | 1173 | 1174 | 1175 | <_> 1176 | 40 4 6 2 -1. 1177 | <_> 1178 | 42 4 2 2 3. 1179 | 0 1180 | 5.0803890917450190e-004 1181 | -9.0554022789001465e-001 1182 | 6.4213967323303223e-001 1183 | <_> 1184 | 1185 | <_> 1186 | 1187 | 1188 | 1189 | <_> 1190 | 1 9 6 1 -1. 1191 | <_> 1192 | 3 9 2 1 3. 1193 | 0 1194 | 2.3357039317488670e-003 1195 | -9.2574918270111084e-001 1196 | 8.6384928226470947e-001 1197 | <_> 1198 | 1199 | <_> 1200 | 1201 | 1202 | 1203 | <_> 1204 | 47 3 4 10 -1. 1205 | <_> 1206 | 47 8 4 5 2. 1207 | 0 1208 | 8.0239427916239947e-005 1209 | -9.9618428945541382e-001 1210 | 9.5355111360549927e-001 1211 | <_> 1212 | 1213 | <_> 1214 | 1215 | 1216 | 1217 | <_> 1218 | 31 5 30 11 -1. 1219 | <_> 1220 | 41 5 10 11 3. 1221 | 0 1222 | 3.2030208967626095e-003 1223 | -1. 1224 | 1.0001050233840942e+000 1225 | <_> 1226 | 1227 | <_> 1228 | 1229 | 1230 | 1231 | <_> 1232 | 0 0 2 1 -1. 1233 | <_> 1234 | 1 0 1 1 2. 1235 | 0 1236 | 0. 1237 | 0. 1238 | -1. 1239 | <_> 1240 | 1241 | <_> 1242 | 1243 | 1244 | 1245 | <_> 1246 | 21 3 42 5 -1. 1247 | <_> 1248 | 35 3 14 5 3. 1249 | 0 1250 | 2.6143440045416355e-003 1251 | -1. 1252 | 1.0002139806747437e+000 1253 | <_> 1254 | 1255 | <_> 1256 | 1257 | 1258 | 1259 | <_> 1260 | 0 0 2 1 -1. 1261 | <_> 1262 | 1 0 1 1 2. 1263 | 0 1264 | 0. 1265 | 0. 1266 | -1. 1267 | <_> 1268 | 1269 | <_> 1270 | 1271 | 1272 | 1273 | <_> 1274 | 8 5 30 9 -1. 1275 | <_> 1276 | 8 8 30 3 3. 1277 | 0 1278 | -7.0475979009643197e-004 1279 | 1. 1280 | -9.9976968765258789e-001 1281 | <_> 1282 | 1283 | <_> 1284 | 1285 | 1286 | 1287 | <_> 1288 | 3 12 33 3 -1. 1289 | <_> 1290 | 14 12 11 3 3. 1291 | 0 1292 | 2.1271279547363520e-003 1293 | -9.9694627523422241e-001 1294 | 1.0002720355987549e+000 1295 | <_> 1296 | 1297 | <_> 1298 | 1299 | 1300 | 1301 | <_> 1302 | 0 0 3 2 -1. 1303 | <_> 1304 | 1 0 1 2 3. 1305 | 0 1306 | -2.4224430671893060e-004 1307 | 1. 1308 | -1. 1309 | <_> 1310 | 1311 | <_> 1312 | 1313 | 1314 | 1315 | <_> 1316 | 46 4 3 8 -1. 1317 | <_> 1318 | 47 4 1 8 3. 1319 | 0 1320 | 7.4700301047414541e-004 1321 | -9.9108231067657471e-001 1322 | 9.9941182136535645e-001 1323 | -1.0991690158843994e+000 1324 | 13 1325 | -1 1326 | <_> 1327 | 1328 | 1329 | <_> 1330 | 1331 | <_> 1332 | 1333 | 1334 | 1335 | <_> 1336 | 1 2 6 5 -1. 1337 | <_> 1338 | 3 2 2 5 3. 1339 | 0 1340 | 1.7227890202775598e-003 1341 | -9.3608891963958740e-001 1342 | 8.7251222133636475e-001 1343 | <_> 1344 | 1345 | <_> 1346 | 1347 | 1348 | 1349 | <_> 1350 | 0 3 18 5 -1. 1351 | <_> 1352 | 6 3 6 5 3. 1353 | 0 1354 | 2.7599320746958256e-003 1355 | -9.9757021665573120e-001 1356 | 1.0000289678573608e+000 1357 | <_> 1358 | 1359 | <_> 1360 | 1361 | 1362 | 1363 | <_> 1364 | 3 1 6 14 -1. 1365 | <_> 1366 | 6 1 3 14 2. 1367 | 0 1368 | -8.9444358309265226e-005 1369 | 1. 1370 | -9.9264812469482422e-001 1371 | <_> 1372 | 1373 | <_> 1374 | 1375 | 1376 | 1377 | <_> 1378 | 3 6 2 10 -1. 1379 | <_> 1380 | 3 11 2 5 2. 1381 | 0 1382 | -2.7962020249105990e-004 1383 | 8.2833290100097656e-001 1384 | -9.8444151878356934e-001 1385 | <_> 1386 | 1387 | <_> 1388 | 1389 | 1390 | 1391 | <_> 1392 | 42 0 4 6 -1. 1393 | <_> 1394 | 42 0 2 3 2. 1395 | <_> 1396 | 44 3 2 3 2. 1397 | 0 1398 | -2.7560539820115082e-005 1399 | 1. 1400 | -9.9543339014053345e-001 1401 | -9.1314977407455444e-001 1402 | 14 1403 | -1 1404 | 1405 | -------------------------------------------------------------------------------- /imageprocessing/4.SimpleApps/xml/haarcascade_russian_plate_number.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | BOOST 5 | HAAR 6 | 20 7 | 60 8 | 9 | GAB 10 | 9.9500000476837158e-001 11 | 5.0000000000000000e-001 12 | 9.4999999999999996e-001 13 | 1 14 | 100 15 | 16 | 0 17 | 1 18 | ALL 19 | 20 20 | 21 | 22 | <_> 23 | 6 24 | -1.3110191822052002e+000 25 | 26 | <_> 27 | 28 | 0 -1 193 1.0079263709485531e-002 29 | 30 | -8.1339186429977417e-001 5.0277775526046753e-001 31 | <_> 32 | 33 | 0 -1 94 -2.2060684859752655e-002 34 | 35 | 7.9418992996215820e-001 -5.0896102190017700e-001 36 | <_> 37 | 38 | 0 -1 18 -4.8777908086776733e-002 39 | 40 | 7.1656656265258789e-001 -4.1640335321426392e-001 41 | <_> 42 | 43 | 0 -1 35 1.0387318208813667e-002 44 | 45 | 3.7618312239646912e-001 -8.5504144430160522e-001 46 | <_> 47 | 48 | 0 -1 191 -9.4083719886839390e-004 49 | 50 | 4.2658549547195435e-001 -5.7729166746139526e-001 51 | <_> 52 | 53 | 0 -1 48 -8.2391249015927315e-003 54 | 55 | 8.2346975803375244e-001 -3.7503159046173096e-001 56 | 57 | <_> 58 | 6 59 | -1.1759783029556274e+000 60 | 61 | <_> 62 | 63 | 0 -1 21 1.7386786639690399e-001 64 | 65 | -6.8139964342117310e-001 6.0767590999603271e-001 66 | <_> 67 | 68 | 0 -1 28 -1.9797295331954956e-002 69 | 70 | 7.8072130680084229e-001 -4.4399836659431458e-001 71 | <_> 72 | 73 | 0 -1 46 -1.0154811898246408e-003 74 | 75 | 3.3383268117904663e-001 -7.6357340812683105e-001 76 | <_> 77 | 78 | 0 -1 138 2.4954911321401596e-002 79 | 80 | -3.9979115128517151e-001 6.8620890378952026e-001 81 | <_> 82 | 83 | 0 -1 25 2.8837744612246752e-003 84 | 85 | -2.7928480505943298e-001 7.9980146884918213e-001 86 | <_> 87 | 88 | 0 -1 26 -3.8839362561702728e-002 89 | 90 | -7.8442335128784180e-001 3.4929576516151428e-001 91 | 92 | <_> 93 | 6 94 | -1.7856997251510620e+000 95 | 96 | <_> 97 | 98 | 0 -1 34 2.7977079153060913e-002 99 | 100 | -5.8424139022827148e-001 6.6850829124450684e-001 101 | <_> 102 | 103 | 0 -1 171 1.9148588180541992e-002 104 | 105 | -6.5457659959793091e-001 4.0804430842399597e-001 106 | <_> 107 | 108 | 0 -1 7 1.1955041438341141e-002 109 | 110 | -4.2002618312835693e-001 5.6217432022094727e-001 111 | <_> 112 | 113 | 0 -1 45 -2.1218564361333847e-002 114 | 115 | 7.1812576055526733e-001 -3.0354043841362000e-001 116 | <_> 117 | 118 | 0 -1 108 2.0117280655540526e-004 119 | 120 | -6.1749500036239624e-001 3.5549193620681763e-001 121 | <_> 122 | 123 | 0 -1 122 3.9725980604998767e-004 124 | 125 | -2.6844096183776855e-001 7.6771658658981323e-001 126 | 127 | <_> 128 | 9 129 | -1.1837021112442017e+000 130 | 131 | <_> 132 | 133 | 0 -1 202 -1.3291766867041588e-002 134 | 135 | 4.5248869061470032e-001 -5.8849954605102539e-001 136 | <_> 137 | 138 | 0 -1 79 -4.8353265970945358e-002 139 | 140 | 7.0951640605926514e-001 -3.2546108961105347e-001 141 | <_> 142 | 143 | 0 -1 22 2.6532993651926517e-003 144 | 145 | -2.5343564152717590e-001 7.6588714122772217e-001 146 | <_> 147 | 148 | 0 -1 66 -3.8548894226551056e-002 149 | 150 | 5.8126109838485718e-001 -3.0813106894493103e-001 151 | <_> 152 | 153 | 0 -1 41 -6.8602780811488628e-004 154 | 155 | 2.6361095905303955e-001 -7.2226840257644653e-001 156 | <_> 157 | 158 | 0 -1 69 -2.5726919993758202e-002 159 | 160 | -8.7153857946395874e-001 1.9438524544239044e-001 161 | <_> 162 | 163 | 0 -1 24 8.4192806389182806e-004 164 | 165 | -3.6150649189949036e-001 5.2065432071685791e-001 166 | <_> 167 | 168 | 0 -1 62 -2.6956878136843443e-003 169 | 170 | 5.9945529699325562e-001 -2.8344830870628357e-001 171 | <_> 172 | 173 | 0 -1 112 3.0572075396776199e-002 174 | 175 | -3.0688971281051636e-001 5.7261526584625244e-001 176 | 177 | <_> 178 | 8 179 | -1.4687808752059937e+000 180 | 181 | <_> 182 | 183 | 0 -1 5 3.1486168503761292e-002 184 | 185 | -5.7836848497390747e-001 3.7931033968925476e-001 186 | <_> 187 | 188 | 0 -1 150 2.8311354108154774e-003 189 | 190 | -5.7888329029083252e-001 3.2841828465461731e-001 191 | <_> 192 | 193 | 0 -1 76 -4.2060948908329010e-002 194 | 195 | 5.5578106641769409e-001 -3.2662427425384521e-001 196 | <_> 197 | 198 | 0 -1 115 6.2936875037848949e-003 199 | 200 | -2.1032968163490295e-001 7.8646916151046753e-001 201 | <_> 202 | 203 | 0 -1 51 7.0570126175880432e-002 204 | 205 | -4.3683132529258728e-001 4.0298295021057129e-001 206 | <_> 207 | 208 | 0 -1 135 2.5173835456371307e-003 209 | 210 | -2.0461565256118774e-001 8.2858163118362427e-001 211 | <_> 212 | 213 | 0 -1 102 1.5648975968360901e-003 214 | 215 | -2.4848082661628723e-001 6.0209411382675171e-001 216 | <_> 217 | 218 | 0 -1 177 -3.5970686003565788e-003 219 | 220 | 2.3294737935066223e-001 -6.5612471103668213e-001 221 | 222 | <_> 223 | 9 224 | -1.1029583215713501e+000 225 | 226 | <_> 227 | 228 | 0 -1 27 -1.1257569491863251e-001 229 | 230 | 3.3181819319725037e-001 -5.3901344537734985e-001 231 | <_> 232 | 233 | 0 -1 142 3.8014666642993689e-003 234 | 235 | -3.6430206894874573e-001 4.5984184741973877e-001 236 | <_> 237 | 238 | 0 -1 57 9.8789634648710489e-004 239 | 240 | -2.6661416888237000e-001 5.6971323490142822e-001 241 | <_> 242 | 243 | 0 -1 55 2.1719809621572495e-002 244 | 245 | 1.8432702124118805e-001 -8.2999354600906372e-001 246 | <_> 247 | 248 | 0 -1 111 5.1051773130893707e-002 249 | 250 | 1.4391148090362549e-001 -9.4541704654693604e-001 251 | <_> 252 | 253 | 0 -1 164 1.8956036074087024e-003 254 | 255 | -6.0830104351043701e-001 2.6091885566711426e-001 256 | <_> 257 | 258 | 0 -1 81 -5.8700828813016415e-003 259 | 260 | 6.9104760885238647e-001 -2.6916843652725220e-001 261 | <_> 262 | 263 | 0 -1 116 -1.1522199492901564e-003 264 | 265 | -6.9503885507583618e-001 2.4749211966991425e-001 266 | <_> 267 | 268 | 0 -1 90 -5.1933946087956429e-003 269 | 270 | 5.8551025390625000e-001 -3.0389472842216492e-001 271 | 272 | <_> 273 | 9 274 | -9.0274518728256226e-001 275 | 276 | <_> 277 | 278 | 0 -1 205 -1.4383997768163681e-002 279 | 280 | 4.5400592684745789e-001 -4.9917897582054138e-001 281 | <_> 282 | 283 | 0 -1 114 -3.3369414508342743e-002 284 | 285 | -9.3247985839843750e-001 1.4586758613586426e-001 286 | <_> 287 | 288 | 0 -1 128 5.2380945999175310e-004 289 | 290 | -2.8349643945693970e-001 6.4983856678009033e-001 291 | <_> 292 | 293 | 0 -1 143 6.1231426661834121e-004 294 | 295 | -1.8502233922481537e-001 6.5052211284637451e-001 296 | <_> 297 | 298 | 0 -1 49 1.7017847858369350e-003 299 | 300 | 2.2008989751338959e-001 -7.2277534008026123e-001 301 | <_> 302 | 303 | 0 -1 133 2.6139442343264818e-003 304 | 305 | 1.8238025903701782e-001 -7.6262325048446655e-001 306 | <_> 307 | 308 | 0 -1 43 -2.0020073279738426e-003 309 | 310 | 5.6799399852752686e-001 -2.8219676017761230e-001 311 | <_> 312 | 313 | 0 -1 119 1.9273828947916627e-003 314 | 315 | -2.0913636684417725e-001 7.9203850030899048e-001 316 | <_> 317 | 318 | 0 -1 134 -9.4476283993571997e-004 319 | 320 | -8.2361942529678345e-001 2.4256958067417145e-001 321 | 322 | <_> 323 | 10 324 | -1.4518526792526245e+000 325 | 326 | <_> 327 | 328 | 0 -1 162 1.6756314784288406e-002 329 | 330 | -6.9359332323074341e-001 5.1373954862356186e-002 331 | <_> 332 | 333 | 0 -1 16 2.4082964286208153e-002 334 | 335 | -3.3989402651786804e-001 4.5332714915275574e-001 336 | <_> 337 | 338 | 0 -1 186 1.2284796684980392e-003 339 | 340 | -2.2297365963459015e-001 6.1439812183380127e-001 341 | <_> 342 | 343 | 0 -1 59 -1.4379122294485569e-003 344 | 345 | -6.9444245100021362e-001 2.0446482300758362e-001 346 | <_> 347 | 348 | 0 -1 185 -1.8713285680860281e-003 349 | 350 | 6.7942184209823608e-001 -2.7580419182777405e-001 351 | <_> 352 | 353 | 0 -1 190 -4.7389674000442028e-003 354 | 355 | -7.0437240600585938e-001 2.6915156841278076e-001 356 | <_> 357 | 358 | 0 -1 156 7.4071279959753156e-004 359 | 360 | -2.9220902919769287e-001 5.3538239002227783e-001 361 | <_> 362 | 363 | 0 -1 11 -2.2739455103874207e-001 364 | 365 | 6.6916191577911377e-001 -2.1987228095531464e-001 366 | <_> 367 | 368 | 0 -1 155 -1.0255509987473488e-003 369 | 370 | 6.3346290588378906e-001 -2.2717863321304321e-001 371 | <_> 372 | 373 | 0 -1 167 2.4775355122983456e-003 374 | 375 | -5.4297816753387451e-001 3.1877547502517700e-001 376 | 377 | <_> 378 | 11 379 | -1.3153649568557739e+000 380 | 381 | <_> 382 | 383 | 0 -1 6 1.9131936132907867e-002 384 | 385 | -6.0168600082397461e-001 1.9141913950443268e-001 386 | <_> 387 | 388 | 0 -1 42 -4.5855185016989708e-003 389 | 390 | 2.1901632845401764e-001 -5.7136750221252441e-001 391 | <_> 392 | 393 | 0 -1 53 -1.9026801455765963e-003 394 | 395 | -8.0075079202651978e-001 1.6502076387405396e-001 396 | <_> 397 | 398 | 0 -1 19 -3.2767035067081451e-002 399 | 400 | 5.1496404409408569e-001 -2.5474679470062256e-001 401 | <_> 402 | 403 | 0 -1 129 6.3941581174731255e-004 404 | 405 | -1.9851709902286530e-001 6.7218667268753052e-001 406 | <_> 407 | 408 | 0 -1 201 1.5573646873235703e-002 409 | 410 | -1.7564551532268524e-001 7.0536541938781738e-001 411 | <_> 412 | 413 | 0 -1 200 9.5508026424795389e-004 414 | 415 | -1.9691802561283112e-001 6.1125624179840088e-001 416 | <_> 417 | 418 | 0 -1 67 9.0427603572607040e-003 419 | 420 | 1.6518253087997437e-001 -8.7012130022048950e-001 421 | <_> 422 | 423 | 0 -1 77 8.1576988101005554e-002 424 | 425 | 1.4075902104377747e-001 -8.4871828556060791e-001 426 | <_> 427 | 428 | 0 -1 166 -5.1994959358125925e-004 429 | 430 | 2.1803210675716400e-001 -5.4628211259841919e-001 431 | <_> 432 | 433 | 0 -1 70 -2.3009868338704109e-002 434 | 435 | -7.9586231708526611e-001 1.5989699959754944e-001 436 | 437 | <_> 438 | 13 439 | -1.4625015258789063e+000 440 | 441 | <_> 442 | 443 | 0 -1 1 2.6759501546621323e-002 444 | 445 | -6.0482984781265259e-001 1.4906832575798035e-001 446 | <_> 447 | 448 | 0 -1 165 3.0343931168317795e-002 449 | 450 | -4.7357541322708130e-001 2.6279065012931824e-001 451 | <_> 452 | 453 | 0 -1 161 1.2678599450737238e-003 454 | 455 | -1.9493983685970306e-001 6.9734728336334229e-001 456 | <_> 457 | 458 | 0 -1 30 1.8607920501381159e-003 459 | 460 | 1.5611934661865234e-001 -9.0542370080947876e-001 461 | <_> 462 | 463 | 0 -1 157 -1.3872641138732433e-003 464 | 465 | 5.3263407945632935e-001 -3.0192303657531738e-001 466 | <_> 467 | 468 | 0 -1 180 -6.9969398900866508e-003 469 | 470 | -9.4549953937530518e-001 1.5575224161148071e-001 471 | <_> 472 | 473 | 0 -1 158 1.1245720088481903e-003 474 | 475 | -2.6688691973686218e-001 5.5608308315277100e-001 476 | <_> 477 | 478 | 0 -1 160 -2.8279949910938740e-003 479 | 480 | -9.1861122846603394e-001 1.3309663534164429e-001 481 | <_> 482 | 483 | 0 -1 58 7.1019242750480771e-004 484 | 485 | -3.0977895855903625e-001 4.3846300244331360e-001 486 | <_> 487 | 488 | 0 -1 8 -4.1933014988899231e-002 489 | 490 | -8.9102542400360107e-001 1.5866196155548096e-001 491 | <_> 492 | 493 | 0 -1 87 1.6568358987569809e-002 494 | 495 | 1.2731756269931793e-001 -8.5553413629531860e-001 496 | <_> 497 | 498 | 0 -1 64 2.0309074316173792e-003 499 | 500 | -2.3260365426540375e-001 6.7330485582351685e-001 501 | <_> 502 | 503 | 0 -1 159 -1.7069760942831635e-003 504 | 505 | -7.1925789117813110e-001 1.9108834862709045e-001 506 | 507 | <_> 508 | 14 509 | -1.4959813356399536e+000 510 | 511 | <_> 512 | 513 | 0 -1 4 1.4695923775434494e-002 514 | 515 | -6.2167906761169434e-001 2.1172638237476349e-001 516 | <_> 517 | 518 | 0 -1 50 -1.6501215286552906e-003 519 | 520 | 1.9353884458541870e-001 -5.7780367136001587e-001 521 | <_> 522 | 523 | 0 -1 123 7.0121872704476118e-004 524 | 525 | -2.2979106009006500e-001 5.3033334016799927e-001 526 | <_> 527 | 528 | 0 -1 52 9.4158272258937359e-004 529 | 530 | 1.6849038004875183e-001 -7.4897718429565430e-001 531 | <_> 532 | 533 | 0 -1 124 -2.0684124901890755e-003 534 | 535 | 6.7936712503433228e-001 -1.9317412376403809e-001 536 | <_> 537 | 538 | 0 -1 23 -1.8305826233699918e-004 539 | 540 | -7.0275229215621948e-001 1.7971208691596985e-001 541 | <_> 542 | 543 | 0 -1 198 5.5587477982044220e-004 544 | 545 | -2.4448128044605255e-001 5.0703984498977661e-001 546 | <_> 547 | 548 | 0 -1 152 4.3448276119306684e-004 549 | 550 | 1.3497908413410187e-001 -8.5621362924575806e-001 551 | <_> 552 | 553 | 0 -1 197 -1.2359691318124533e-003 554 | 555 | 6.1710417270660400e-001 -2.2301279008388519e-001 556 | <_> 557 | 558 | 0 -1 153 -6.9627340417355299e-004 559 | 560 | -6.4706987142562866e-001 2.3951497673988342e-001 561 | <_> 562 | 563 | 0 -1 175 1.0683680884540081e-003 564 | 565 | -2.8343605995178223e-001 4.9318629503250122e-001 566 | <_> 567 | 568 | 0 -1 168 1.7104238213505596e-004 569 | 570 | -2.7171039581298828e-001 4.2520308494567871e-001 571 | <_> 572 | 573 | 0 -1 144 8.2368971779942513e-003 574 | 575 | 1.6359315812587738e-001 -7.3864609003067017e-001 576 | <_> 577 | 578 | 0 -1 131 -5.9884190559387207e-003 579 | 580 | 3.8030940294265747e-001 -3.0763563513755798e-001 581 | 582 | <_> 583 | 9 584 | -1.1183819770812988e+000 585 | 586 | <_> 587 | 588 | 0 -1 187 -1.4863962307572365e-002 589 | 590 | 1.1989101022481918e-001 -6.6138857603073120e-001 591 | <_> 592 | 593 | 0 -1 117 2.4736612103879452e-003 594 | 595 | -5.2778661251068115e-001 2.3012125492095947e-001 596 | <_> 597 | 598 | 0 -1 71 -4.8899287357926369e-003 599 | 600 | 6.0186779499053955e-001 -2.0681641995906830e-001 601 | <_> 602 | 603 | 0 -1 174 1.5796069055795670e-002 604 | 605 | 1.4610521495342255e-001 -8.2099527120590210e-001 606 | <_> 607 | 608 | 0 -1 104 5.9720675926655531e-004 609 | 610 | -2.3587301373481750e-001 4.8323699831962585e-001 611 | <_> 612 | 613 | 0 -1 103 -1.9448818638920784e-003 614 | 615 | 6.4417767524719238e-001 -2.0953170955181122e-001 616 | <_> 617 | 618 | 0 -1 154 1.9433414854574949e-004 619 | 620 | 2.0600238442420959e-001 -7.2418999671936035e-001 621 | <_> 622 | 623 | 0 -1 163 -1.5097535215318203e-002 624 | 625 | -8.7151485681533813e-001 1.2594890594482422e-001 626 | <_> 627 | 628 | 0 -1 82 -3.9843879640102386e-003 629 | 630 | 4.3801131844520569e-001 -2.9676589369773865e-001 631 | 632 | <_> 633 | 12 634 | -1.5434337854385376e+000 635 | 636 | <_> 637 | 638 | 0 -1 105 1.1273270938545465e-003 639 | 640 | -4.7976878285408020e-001 3.6627906560897827e-001 641 | <_> 642 | 643 | 0 -1 95 9.7806821577250957e-004 644 | 645 | -2.7689707279205322e-001 5.1295894384384155e-001 646 | <_> 647 | 648 | 0 -1 15 1.6528377309441566e-002 649 | 650 | -4.5259797573089600e-001 2.4290211498737335e-001 651 | <_> 652 | 653 | 0 -1 137 1.1040373938158154e-003 654 | 655 | -3.2714816927909851e-001 3.4566244482994080e-001 656 | <_> 657 | 658 | 0 -1 109 -1.7780361231416464e-003 659 | 660 | -6.9511681795120239e-001 1.8829824030399323e-001 661 | <_> 662 | 663 | 0 -1 92 4.6280334936454892e-004 664 | 665 | -2.3864887654781342e-001 5.3136289119720459e-001 666 | <_> 667 | 668 | 0 -1 100 -1.4975425438024104e-004 669 | 670 | -6.6509884595870972e-001 2.1483559906482697e-001 671 | <_> 672 | 673 | 0 -1 83 -1.4625370968133211e-003 674 | 675 | 2.6556470990180969e-001 -4.9002227187156677e-001 676 | <_> 677 | 678 | 0 -1 14 -2.6019819779321551e-004 679 | 680 | -7.0160359144210815e-001 1.6359129548072815e-001 681 | <_> 682 | 683 | 0 -1 14 2.2371641534846276e-004 684 | 685 | 1.2919521331787109e-001 -6.9767206907272339e-001 686 | <_> 687 | 688 | 0 -1 194 -1.0447315871715546e-002 689 | 690 | 2.1837629377841949e-001 -4.6482038497924805e-001 691 | <_> 692 | 693 | 0 -1 20 -9.2897024005651474e-003 694 | 695 | 6.4918082952499390e-001 -2.0495061576366425e-001 696 | 697 | <_> 698 | 12 699 | -1.4440233707427979e+000 700 | 701 | <_> 702 | 703 | 0 -1 9 8.5356216877698898e-003 704 | 705 | -5.3151458501815796e-001 2.2357723116874695e-001 706 | <_> 707 | 708 | 0 -1 182 1.5294685726985335e-003 709 | 710 | -6.0895460844039917e-001 1.7429886758327484e-001 711 | <_> 712 | 713 | 0 -1 40 1.8610086990520358e-003 714 | 715 | -2.5480428338050842e-001 4.2150071263313293e-001 716 | <_> 717 | 718 | 0 -1 176 1.5735558699816465e-003 719 | 720 | -1.6832062602043152e-001 4.8567819595336914e-001 721 | <_> 722 | 723 | 0 -1 179 -6.7992787808179855e-004 724 | 725 | 3.9894598722457886e-001 -3.0744269490242004e-001 726 | <_> 727 | 728 | 0 -1 151 4.9857296049594879e-002 729 | 730 | -1.5370152890682220e-001 6.7523348331451416e-001 731 | <_> 732 | 733 | 0 -1 139 -2.8339058160781860e-002 734 | 735 | 5.0540882349014282e-001 -2.9473617672920227e-001 736 | <_> 737 | 738 | 0 -1 72 -7.7956825494766235e-002 739 | 740 | 4.0387043356895447e-001 -3.0287107825279236e-001 741 | <_> 742 | 743 | 0 -1 89 -3.6115488037467003e-003 744 | 745 | 6.3856112957000732e-001 -1.6917882859706879e-001 746 | <_> 747 | 748 | 0 -1 207 3.3940275898203254e-004 749 | 750 | 1.3713537156581879e-001 -7.8120291233062744e-001 751 | <_> 752 | 753 | 0 -1 39 4.0043061599135399e-003 754 | 755 | 1.5233094990253448e-001 -6.3939732313156128e-001 756 | <_> 757 | 758 | 0 -1 65 -4.4601649278774858e-004 759 | 760 | 2.1333815157413483e-001 -4.7728902101516724e-001 761 | 762 | <_> 763 | 13 764 | -1.2532578706741333e+000 765 | 766 | <_> 767 | 768 | 0 -1 204 -2.0341124385595322e-002 769 | 770 | 2.4170616269111633e-001 -4.9161517620086670e-001 771 | <_> 772 | 773 | 0 -1 169 8.9040049351751804e-004 774 | 775 | -2.8570893406867981e-001 4.2666998505592346e-001 776 | <_> 777 | 778 | 0 -1 60 -3.3259526826441288e-003 779 | 780 | 4.2626520991325378e-001 -2.3811897635459900e-001 781 | <_> 782 | 783 | 0 -1 38 -3.1714607030153275e-002 784 | 785 | -8.5494768619537354e-001 1.1712870001792908e-001 786 | <_> 787 | 788 | 0 -1 31 -1.1553820222616196e-002 789 | 790 | 2.2675493359565735e-001 -4.9640509486198425e-001 791 | <_> 792 | 793 | 0 -1 80 -6.7727260291576385e-002 794 | 795 | -8.6705064773559570e-001 9.8765812814235687e-002 796 | <_> 797 | 798 | 0 -1 63 -3.1611192971467972e-003 799 | 800 | 3.9449846744537354e-001 -2.8210711479187012e-001 801 | <_> 802 | 803 | 0 -1 149 4.3221906526014209e-004 804 | 805 | 1.1805476248264313e-001 -9.0178310871124268e-001 806 | <_> 807 | 808 | 0 -1 188 -2.2296360111795366e-004 809 | 810 | 1.7324598133563995e-001 -5.2877873182296753e-001 811 | <_> 812 | 813 | 0 -1 120 -2.1440195851027966e-003 814 | 815 | 5.5513423681259155e-001 -1.9791823625564575e-001 816 | <_> 817 | 818 | 0 -1 113 -4.5122690498828888e-003 819 | 820 | 5.5083745718002319e-001 -1.8810540437698364e-001 821 | <_> 822 | 823 | 0 -1 130 -3.5149464383721352e-003 824 | 825 | 5.5467557907104492e-001 -2.2856147587299347e-001 826 | <_> 827 | 828 | 0 -1 121 -4.4786706566810608e-003 829 | 830 | -7.9106998443603516e-001 1.7836479842662811e-001 831 | 832 | <_> 833 | 15 834 | -1.1898330450057983e+000 835 | 836 | <_> 837 | 838 | 0 -1 0 1.5206767246127129e-002 839 | 840 | -4.9173194169998169e-001 2.7093595266342163e-001 841 | <_> 842 | 843 | 0 -1 125 6.9564773002639413e-004 844 | 845 | -2.3066598176956177e-001 5.4028344154357910e-001 846 | <_> 847 | 848 | 0 -1 125 -8.3668017759919167e-004 849 | 850 | 4.4658055901527405e-001 -2.7778497338294983e-001 851 | <_> 852 | 853 | 0 -1 91 -3.8321319967508316e-002 854 | 855 | -7.9069298505783081e-001 1.8700349330902100e-001 856 | <_> 857 | 858 | 0 -1 207 -2.1063965687062591e-004 859 | 860 | -6.3163763284683228e-001 1.8656146526336670e-001 861 | <_> 862 | 863 | 0 -1 61 3.6907330155372620e-002 864 | 865 | 9.9319733679294586e-002 -7.6762360334396362e-001 866 | <_> 867 | 868 | 0 -1 85 8.1071127206087112e-003 869 | 870 | -2.8561261296272278e-001 3.4748569130897522e-001 871 | <_> 872 | 873 | 0 -1 189 6.2815943965688348e-004 874 | 875 | 1.6656193137168884e-001 -5.4635977745056152e-001 876 | <_> 877 | 878 | 0 -1 86 2.8582263621501625e-004 879 | 880 | -2.4100163578987122e-001 4.5410770177841187e-001 881 | <_> 882 | 883 | 0 -1 173 -1.9862279295921326e-002 884 | 885 | -9.4317340850830078e-001 1.2513674795627594e-001 886 | <_> 887 | 888 | 0 -1 96 1.1506280861794949e-003 889 | 890 | -2.4514634907245636e-001 4.6452957391738892e-001 891 | <_> 892 | 893 | 0 -1 29 2.3451185552403331e-004 894 | 895 | 1.2489952147006989e-001 -8.0278074741363525e-001 896 | <_> 897 | 898 | 0 -1 101 6.7837134702131152e-004 899 | 900 | -2.5017899274826050e-001 4.3841627240180969e-001 901 | <_> 902 | 903 | 0 -1 17 3.1583159579895437e-004 904 | 905 | 1.5951988101005554e-001 -7.4524724483489990e-001 906 | <_> 907 | 908 | 0 -1 110 7.2623658925294876e-003 909 | 910 | 1.2511830031871796e-001 -6.5659755468368530e-001 911 | 912 | <_> 913 | 15 914 | -1.2416906356811523e+000 915 | 916 | <_> 917 | 918 | 0 -1 2 7.5144092552363873e-003 919 | 920 | -5.9518074989318848e-001 5.3793102502822876e-002 921 | <_> 922 | 923 | 0 -1 98 -6.4494344405829906e-004 924 | 925 | 2.0429474115371704e-001 -4.3661779165267944e-001 926 | <_> 927 | 928 | 0 -1 196 3.3831471228040755e-004 929 | 930 | -2.1566553413867950e-001 4.7118204832077026e-001 931 | <_> 932 | 933 | 0 -1 73 2.8320802375674248e-003 934 | 935 | 1.3322307169437408e-001 -8.3729231357574463e-001 936 | <_> 937 | 938 | 0 -1 199 1.6218879027292132e-003 939 | 940 | -2.0889574289321899e-001 4.7114694118499756e-001 941 | <_> 942 | 943 | 0 -1 10 2.7122153551317751e-004 944 | 945 | 1.1475630849599838e-001 -7.8029519319534302e-001 946 | <_> 947 | 948 | 0 -1 170 8.8358242064714432e-003 949 | 950 | 1.2460929155349731e-001 -7.6791721582412720e-001 951 | <_> 952 | 953 | 0 -1 106 9.7634072881191969e-004 954 | 955 | -2.0806105434894562e-001 5.1318311691284180e-001 956 | <_> 957 | 958 | 0 -1 107 -2.1239042282104492e-002 959 | 960 | -8.7171542644500732e-001 1.2721680104732513e-001 961 | <_> 962 | 963 | 0 -1 97 7.1797124110162258e-004 964 | 965 | -3.0763280391693115e-001 3.7504923343658447e-001 966 | <_> 967 | 968 | 0 -1 32 2.7504155412316322e-002 969 | 970 | 1.5651945769786835e-001 -7.9516488313674927e-001 971 | <_> 972 | 973 | 0 -1 178 1.0624636197462678e-003 974 | 975 | 1.3473348319530487e-001 -6.9174814224243164e-001 976 | <_> 977 | 978 | 0 -1 33 -8.1248432397842407e-002 979 | 980 | -8.5117286443710327e-001 1.0601779073476791e-001 981 | <_> 982 | 983 | 0 -1 140 -2.2936165332794189e-002 984 | 985 | 3.9202499389648438e-001 -2.9867398738861084e-001 986 | <_> 987 | 988 | 0 -1 146 -1.3326616026461124e-003 989 | 990 | 4.7240665555000305e-001 -2.6287403702735901e-001 991 | 992 | <_> 993 | 13 994 | -1.3383979797363281e+000 995 | 996 | <_> 997 | 998 | 0 -1 3 3.2254494726657867e-002 999 | 1000 | -6.5151512622833252e-001 7.9947575926780701e-002 1001 | <_> 1002 | 1003 | 0 -1 172 -1.1810796568170190e-003 1004 | 1005 | 2.5173431634902954e-001 -4.5536977052688599e-001 1006 | <_> 1007 | 1008 | 0 -1 88 8.0361258005723357e-004 1009 | 1010 | -2.1178695559501648e-001 4.9318632483482361e-001 1011 | <_> 1012 | 1013 | 0 -1 93 6.6201295703649521e-004 1014 | 1015 | -1.9441033899784088e-001 4.6225026249885559e-001 1016 | <_> 1017 | 1018 | 0 -1 84 3.4565184614621103e-004 1019 | 1020 | -2.1175089478492737e-001 4.6985754370689392e-001 1021 | <_> 1022 | 1023 | 0 -1 132 -5.6433549616485834e-004 1024 | 1025 | -7.9713624715805054e-001 1.8714086711406708e-001 1026 | <_> 1027 | 1028 | 0 -1 56 5.8492692187428474e-004 1029 | 1030 | -3.9330720901489258e-001 2.4242231249809265e-001 1031 | <_> 1032 | 1033 | 0 -1 13 2.5043603032827377e-002 1034 | 1035 | 1.3490234315395355e-001 -7.5923883914947510e-001 1036 | <_> 1037 | 1038 | 0 -1 37 -1.8510785885155201e-003 1039 | 1040 | 4.1279399394989014e-001 -2.7271771430969238e-001 1041 | <_> 1042 | 1043 | 0 -1 68 -2.5741360150277615e-004 1044 | 1045 | -6.3662034273147583e-001 1.8135882914066315e-001 1046 | <_> 1047 | 1048 | 0 -1 184 -1.5121832489967346e-002 1049 | 1050 | 2.5249326229095459e-001 -3.8438034057617188e-001 1051 | <_> 1052 | 1053 | 0 -1 203 -1.5006031841039658e-002 1054 | 1055 | -8.4878319501876831e-001 1.1718367785215378e-001 1056 | <_> 1057 | 1058 | 0 -1 74 4.9880752339959145e-004 1059 | 1060 | -2.6755046844482422e-001 4.5769825577735901e-001 1061 | 1062 | <_> 1063 | 12 1064 | -1.2097512483596802e+000 1065 | 1066 | <_> 1067 | 1068 | 0 -1 195 -1.1614991351962090e-002 1069 | 1070 | 1.4465409517288208e-001 -5.9521216154098511e-001 1071 | <_> 1072 | 1073 | 0 -1 75 3.9767110138200223e-004 1074 | 1075 | -4.2697989940643311e-001 2.4382311105728149e-001 1076 | <_> 1077 | 1078 | 0 -1 47 -4.6969857066869736e-002 1079 | 1080 | -9.3969690799713135e-001 1.2196484953165054e-001 1081 | <_> 1082 | 1083 | 0 -1 136 5.5550434626638889e-004 1084 | 1085 | -1.8246935307979584e-001 6.5156191587448120e-001 1086 | <_> 1087 | 1088 | 0 -1 99 2.9468833236023784e-004 1089 | 1090 | 1.5099152922630310e-001 -7.8840750455856323e-001 1091 | <_> 1092 | 1093 | 0 -1 44 1.2439775280654430e-002 1094 | 1095 | 1.4981375634670258e-001 -7.5917595624923706e-001 1096 | <_> 1097 | 1098 | 0 -1 147 6.6337559837847948e-004 1099 | 1100 | -2.5185841321945190e-001 5.9387433528900146e-001 1101 | <_> 1102 | 1103 | 0 -1 148 -6.8454549182206392e-004 1104 | 1105 | 5.1199448108673096e-001 -2.5247576832771301e-001 1106 | <_> 1107 | 1108 | 0 -1 141 1.4808592386543751e-003 1109 | 1110 | 2.2439701855182648e-001 -5.8184891939163208e-001 1111 | <_> 1112 | 1113 | 0 -1 12 6.0307271778583527e-003 1114 | 1115 | -4.3553912639617920e-001 2.8183382749557495e-001 1116 | <_> 1117 | 1118 | 0 -1 78 -1.9170897081494331e-002 1119 | 1120 | -8.5707378387451172e-001 1.4850790798664093e-001 1121 | <_> 1122 | 1123 | 0 -1 122 3.0278289341367781e-004 1124 | 1125 | -3.1547480821609497e-001 4.1798374056816101e-001 1126 | 1127 | <_> 1128 | 10 1129 | -1.2253109216690063e+000 1130 | 1131 | <_> 1132 | 1133 | 0 -1 181 4.6847470104694366e-002 1134 | 1135 | -4.9239391088485718e-001 5.2287584543228149e-001 1136 | <_> 1137 | 1138 | 0 -1 118 2.2181579843163490e-003 1139 | 1140 | -4.2569425702095032e-001 3.6892616748809814e-001 1141 | <_> 1142 | 1143 | 0 -1 145 6.1082182219251990e-004 1144 | 1145 | 1.7654621601104736e-001 -8.2656937837600708e-001 1146 | <_> 1147 | 1148 | 0 -1 127 1.7401995137333870e-002 1149 | 1150 | 2.7770876884460449e-001 -5.6393522024154663e-001 1151 | <_> 1152 | 1153 | 0 -1 54 5.2314018830657005e-004 1154 | 1155 | -3.6257097125053406e-001 4.6126455068588257e-001 1156 | <_> 1157 | 1158 | 0 -1 206 2.1581796463578939e-003 1159 | 1160 | 1.9110183417797089e-001 -6.8012320995330811e-001 1161 | <_> 1162 | 1163 | 0 -1 192 -1.3209994649514556e-003 1164 | 1165 | 6.7618584632873535e-001 -2.6087108254432678e-001 1166 | <_> 1167 | 1168 | 0 -1 126 -1.2237254530191422e-002 1169 | 1170 | -5.7184767723083496e-001 3.0778104066848755e-001 1171 | <_> 1172 | 1173 | 0 -1 36 8.7829465046525002e-003 1174 | 1175 | 1.6890920698642731e-001 -7.8835797309875488e-001 1176 | <_> 1177 | 1178 | 0 -1 183 7.5588272884488106e-003 1179 | 1180 | 1.5143942832946777e-001 -8.2572847604751587e-001 1181 | 1182 | <_> 1183 | 1184 | <_> 1185 | 0 0 10 10 -1. 1186 | <_> 1187 | 0 0 5 5 2. 1188 | <_> 1189 | 5 5 5 5 2. 1190 | 0 1191 | <_> 1192 | 1193 | <_> 1194 | 0 0 12 16 -1. 1195 | <_> 1196 | 6 0 6 16 2. 1197 | 0 1198 | <_> 1199 | 1200 | <_> 1201 | 0 3 10 6 -1. 1202 | <_> 1203 | 5 3 5 6 2. 1204 | 0 1205 | <_> 1206 | 1207 | <_> 1208 | 0 3 21 16 -1. 1209 | <_> 1210 | 7 3 7 16 3. 1211 | 0 1212 | <_> 1213 | 1214 | <_> 1215 | 0 4 16 9 -1. 1216 | <_> 1217 | 4 4 8 9 2. 1218 | 0 1219 | <_> 1220 | 1221 | <_> 1222 | 0 4 10 12 -1. 1223 | <_> 1224 | 5 4 5 12 2. 1225 | 0 1226 | <_> 1227 | 1228 | <_> 1229 | 0 7 14 7 -1. 1230 | <_> 1231 | 7 7 7 7 2. 1232 | 0 1233 | <_> 1234 | 1235 | <_> 1236 | 0 9 12 7 -1. 1237 | <_> 1238 | 6 9 6 7 2. 1239 | 0 1240 | <_> 1241 | 1242 | <_> 1243 | 0 9 60 3 -1. 1244 | <_> 1245 | 30 9 30 3 2. 1246 | 0 1247 | <_> 1248 | 1249 | <_> 1250 | 0 10 8 3 -1. 1251 | <_> 1252 | 4 10 4 3 2. 1253 | 0 1254 | <_> 1255 | 1256 | <_> 1257 | 0 11 1 2 -1. 1258 | <_> 1259 | 0 12 1 1 2. 1260 | 0 1261 | <_> 1262 | 1263 | <_> 1264 | 1 0 51 12 -1. 1265 | <_> 1266 | 1 4 51 4 3. 1267 | 0 1268 | <_> 1269 | 1270 | <_> 1271 | 1 3 15 7 -1. 1272 | <_> 1273 | 6 3 5 7 3. 1274 | 0 1275 | <_> 1276 | 1277 | <_> 1278 | 1 7 30 6 -1. 1279 | <_> 1280 | 1 7 15 3 2. 1281 | <_> 1282 | 16 10 15 3 2. 1283 | 0 1284 | <_> 1285 | 1286 | <_> 1287 | 1 12 1 2 -1. 1288 | <_> 1289 | 1 13 1 1 2. 1290 | 0 1291 | <_> 1292 | 1293 | <_> 1294 | 2 2 18 16 -1. 1295 | <_> 1296 | 2 6 18 8 2. 1297 | 0 1298 | <_> 1299 | 1300 | <_> 1301 | 2 3 29 4 -1. 1302 | <_> 1303 | 2 5 29 2 2. 1304 | 0 1305 | <_> 1306 | 1307 | <_> 1308 | 2 9 1 2 -1. 1309 | <_> 1310 | 2 10 1 1 2. 1311 | 0 1312 | <_> 1313 | 1314 | <_> 1315 | 2 14 40 6 -1. 1316 | <_> 1317 | 2 17 40 3 2. 1318 | 0 1319 | <_> 1320 | 1321 | <_> 1322 | 3 0 22 6 -1. 1323 | <_> 1324 | 3 2 22 2 3. 1325 | 0 1326 | <_> 1327 | 1328 | <_> 1329 | 3 2 38 2 -1. 1330 | <_> 1331 | 3 2 19 1 2. 1332 | <_> 1333 | 22 3 19 1 2. 1334 | 0 1335 | <_> 1336 | 1337 | <_> 1338 | 3 4 51 16 -1. 1339 | <_> 1340 | 3 8 51 8 2. 1341 | 0 1342 | <_> 1343 | 1344 | <_> 1345 | 3 7 3 8 -1. 1346 | <_> 1347 | 4 7 1 8 3. 1348 | 0 1349 | <_> 1350 | 1351 | <_> 1352 | 3 9 1 3 -1. 1353 | <_> 1354 | 3 10 1 1 3. 1355 | 0 1356 | <_> 1357 | 1358 | <_> 1359 | 4 8 3 5 -1. 1360 | <_> 1361 | 5 8 1 5 3. 1362 | 0 1363 | <_> 1364 | 1365 | <_> 1366 | 4 8 4 9 -1. 1367 | <_> 1368 | 5 8 2 9 2. 1369 | 0 1370 | <_> 1371 | 1372 | <_> 1373 | 4 11 36 9 -1. 1374 | <_> 1375 | 16 11 12 9 3. 1376 | 0 1377 | <_> 1378 | 1379 | <_> 1380 | 4 14 49 6 -1. 1381 | <_> 1382 | 4 17 49 3 2. 1383 | 0 1384 | <_> 1385 | 1386 | <_> 1387 | 5 0 17 6 -1. 1388 | <_> 1389 | 5 2 17 2 3. 1390 | 0 1391 | <_> 1392 | 1393 | <_> 1394 | 5 1 3 1 -1. 1395 | <_> 1396 | 6 1 1 1 3. 1397 | 0 1398 | <_> 1399 | 1400 | <_> 1401 | 5 1 8 2 -1. 1402 | <_> 1403 | 7 1 4 2 2. 1404 | 0 1405 | <_> 1406 | 1407 | <_> 1408 | 5 2 36 9 -1. 1409 | <_> 1410 | 17 2 12 9 3. 1411 | 0 1412 | <_> 1413 | 1414 | <_> 1415 | 5 3 33 17 -1. 1416 | <_> 1417 | 16 3 11 17 3. 1418 | 0 1419 | <_> 1420 | 1421 | <_> 1422 | 6 0 30 19 -1. 1423 | <_> 1424 | 16 0 10 19 3. 1425 | 0 1426 | <_> 1427 | 1428 | <_> 1429 | 6 3 29 4 -1. 1430 | <_> 1431 | 6 5 29 2 2. 1432 | 0 1433 | <_> 1434 | 1435 | <_> 1436 | 6 4 16 16 -1. 1437 | <_> 1438 | 14 4 8 16 2. 1439 | 0 1440 | <_> 1441 | 1442 | <_> 1443 | 6 9 54 1 -1. 1444 | <_> 1445 | 33 9 27 1 2. 1446 | 0 1447 | <_> 1448 | 1449 | <_> 1450 | 7 0 4 18 -1. 1451 | <_> 1452 | 8 0 2 18 2. 1453 | 0 1454 | <_> 1455 | 1456 | <_> 1457 | 7 3 12 15 -1. 1458 | <_> 1459 | 13 3 6 15 2. 1460 | 0 1461 | <_> 1462 | 1463 | <_> 1464 | 7 4 20 5 -1. 1465 | <_> 1466 | 12 4 10 5 2. 1467 | 0 1468 | <_> 1469 | 1470 | <_> 1471 | 7 4 6 3 -1. 1472 | <_> 1473 | 7 5 6 1 3. 1474 | 0 1475 | <_> 1476 | 1477 | <_> 1478 | 7 4 36 6 -1. 1479 | <_> 1480 | 19 4 12 6 3. 1481 | 0 1482 | <_> 1483 | 1484 | <_> 1485 | 7 5 28 4 -1. 1486 | <_> 1487 | 14 5 14 4 2. 1488 | 0 1489 | <_> 1490 | 1491 | <_> 1492 | 7 7 4 11 -1. 1493 | <_> 1494 | 8 7 2 11 2. 1495 | 0 1496 | <_> 1497 | 1498 | <_> 1499 | 7 9 12 7 -1. 1500 | <_> 1501 | 13 9 6 7 2. 1502 | 0 1503 | <_> 1504 | 1505 | <_> 1506 | 8 1 21 4 -1. 1507 | <_> 1508 | 8 3 21 2 2. 1509 | 0 1510 | <_> 1511 | 1512 | <_> 1513 | 8 4 28 6 -1. 1514 | <_> 1515 | 15 4 14 6 2. 1516 | 0 1517 | <_> 1518 | 1519 | <_> 1520 | 8 8 38 6 -1. 1521 | <_> 1522 | 8 10 38 2 3. 1523 | 0 1524 | <_> 1525 | 1526 | <_> 1527 | 8 14 25 4 -1. 1528 | <_> 1529 | 8 15 25 2 2. 1530 | 0 1531 | <_> 1532 | 1533 | <_> 1534 | 9 2 12 4 -1. 1535 | <_> 1536 | 12 2 6 4 2. 1537 | 0 1538 | <_> 1539 | 1540 | <_> 1541 | 9 5 24 3 -1. 1542 | <_> 1543 | 15 5 12 3 2. 1544 | 0 1545 | <_> 1546 | 1547 | <_> 1548 | 9 8 40 12 -1. 1549 | <_> 1550 | 9 12 40 4 3. 1551 | 0 1552 | <_> 1553 | 1554 | <_> 1555 | 10 2 8 2 -1. 1556 | <_> 1557 | 12 2 4 2 2. 1558 | 0 1559 | <_> 1560 | 1561 | <_> 1562 | 10 2 9 2 -1. 1563 | <_> 1564 | 13 2 3 2 3. 1565 | 0 1566 | <_> 1567 | 1568 | <_> 1569 | 10 5 3 3 -1. 1570 | <_> 1571 | 11 6 1 1 9. 1572 | 0 1573 | <_> 1574 | 1575 | <_> 1576 | 11 0 32 20 -1. 1577 | <_> 1578 | 19 0 16 20 2. 1579 | 0 1580 | <_> 1581 | 1582 | <_> 1583 | 11 3 1 4 -1. 1584 | <_> 1585 | 11 5 1 2 2. 1586 | 0 1587 | <_> 1588 | 1589 | <_> 1590 | 11 9 4 3 -1. 1591 | <_> 1592 | 12 9 2 3 2. 1593 | 0 1594 | <_> 1595 | 1596 | <_> 1597 | 11 9 3 7 -1. 1598 | <_> 1599 | 12 9 1 7 3. 1600 | 0 1601 | <_> 1602 | 1603 | <_> 1604 | 12 3 9 2 -1. 1605 | <_> 1606 | 15 3 3 2 3. 1607 | 0 1608 | <_> 1609 | 1610 | <_> 1611 | 12 6 6 6 -1. 1612 | <_> 1613 | 14 6 2 6 3. 1614 | 0 1615 | <_> 1616 | 1617 | <_> 1618 | 12 10 42 10 -1. 1619 | <_> 1620 | 26 10 14 10 3. 1621 | 0 1622 | <_> 1623 | 1624 | <_> 1625 | 12 14 11 3 -1. 1626 | <_> 1627 | 12 15 11 1 3. 1628 | 0 1629 | <_> 1630 | 1631 | <_> 1632 | 13 4 6 14 -1. 1633 | <_> 1634 | 15 4 2 14 3. 1635 | 0 1636 | <_> 1637 | 1638 | <_> 1639 | 13 8 3 6 -1. 1640 | <_> 1641 | 14 8 1 6 3. 1642 | 0 1643 | <_> 1644 | 1645 | <_> 1646 | 13 11 32 2 -1. 1647 | <_> 1648 | 21 11 16 2 2. 1649 | 0 1650 | <_> 1651 | 1652 | <_> 1653 | 13 13 25 6 -1. 1654 | <_> 1655 | 13 16 25 3 2. 1656 | 0 1657 | <_> 1658 | 1659 | <_> 1660 | 13 16 21 3 -1. 1661 | <_> 1662 | 20 16 7 3 3. 1663 | 0 1664 | <_> 1665 | 1666 | <_> 1667 | 14 2 3 2 -1. 1668 | <_> 1669 | 15 2 1 2 3. 1670 | 0 1671 | <_> 1672 | 1673 | <_> 1674 | 14 2 24 8 -1. 1675 | <_> 1676 | 20 2 12 8 2. 1677 | 0 1678 | <_> 1679 | 1680 | <_> 1681 | 14 13 36 6 -1. 1682 | <_> 1683 | 23 13 18 6 2. 1684 | 0 1685 | <_> 1686 | 1687 | <_> 1688 | 14 14 8 3 -1. 1689 | <_> 1690 | 14 15 8 1 3. 1691 | 0 1692 | <_> 1693 | 1694 | <_> 1695 | 14 14 45 6 -1. 1696 | <_> 1697 | 14 17 45 3 2. 1698 | 0 1699 | <_> 1700 | 1701 | <_> 1702 | 14 18 9 2 -1. 1703 | <_> 1704 | 17 18 3 2 3. 1705 | 0 1706 | <_> 1707 | 1708 | <_> 1709 | 15 9 4 1 -1. 1710 | <_> 1711 | 16 9 2 1 2. 1712 | 0 1713 | <_> 1714 | 1715 | <_> 1716 | 15 10 19 4 -1. 1717 | <_> 1718 | 15 12 19 2 2. 1719 | 0 1720 | <_> 1721 | 1722 | <_> 1723 | 16 0 28 8 -1. 1724 | <_> 1725 | 16 2 28 4 2. 1726 | 0 1727 | <_> 1728 | 1729 | <_> 1730 | 16 2 36 18 -1. 1731 | <_> 1732 | 28 2 12 18 3. 1733 | 0 1734 | <_> 1735 | 1736 | <_> 1737 | 16 6 24 6 -1. 1738 | <_> 1739 | 22 6 12 6 2. 1740 | 0 1741 | <_> 1742 | 1743 | <_> 1744 | 17 1 24 6 -1. 1745 | <_> 1746 | 17 3 24 2 3. 1747 | 0 1748 | <_> 1749 | 1750 | <_> 1751 | 17 3 15 12 -1. 1752 | <_> 1753 | 22 7 5 4 9. 1754 | 0 1755 | <_> 1756 | 1757 | <_> 1758 | 17 15 11 3 -1. 1759 | <_> 1760 | 17 16 11 1 3. 1761 | 0 1762 | <_> 1763 | 1764 | <_> 1765 | 18 5 6 10 -1. 1766 | <_> 1767 | 20 5 2 10 3. 1768 | 0 1769 | <_> 1770 | 1771 | <_> 1772 | 18 6 18 3 -1. 1773 | <_> 1774 | 24 6 6 3 3. 1775 | 0 1776 | <_> 1777 | 1778 | <_> 1779 | 18 11 3 1 -1. 1780 | <_> 1781 | 19 11 1 1 3. 1782 | 0 1783 | <_> 1784 | 1785 | <_> 1786 | 19 6 32 2 -1. 1787 | <_> 1788 | 27 6 16 2 2. 1789 | 0 1790 | <_> 1791 | 1792 | <_> 1793 | 19 8 3 1 -1. 1794 | <_> 1795 | 20 8 1 1 3. 1796 | 0 1797 | <_> 1798 | 1799 | <_> 1800 | 19 9 14 11 -1. 1801 | <_> 1802 | 26 9 7 11 2. 1803 | 0 1804 | <_> 1805 | 1806 | <_> 1807 | 19 10 3 3 -1. 1808 | <_> 1809 | 20 10 1 3 3. 1810 | 0 1811 | <_> 1812 | 1813 | <_> 1814 | 19 13 7 3 -1. 1815 | <_> 1816 | 19 14 7 1 3. 1817 | 0 1818 | <_> 1819 | 1820 | <_> 1821 | 19 14 13 3 -1. 1822 | <_> 1823 | 19 15 13 1 3. 1824 | 0 1825 | <_> 1826 | 1827 | <_> 1828 | 20 0 15 20 -1. 1829 | <_> 1830 | 25 0 5 20 3. 1831 | 0 1832 | <_> 1833 | 1834 | <_> 1835 | 20 9 3 1 -1. 1836 | <_> 1837 | 21 9 1 1 3. 1838 | 0 1839 | <_> 1840 | 1841 | <_> 1842 | 20 10 3 2 -1. 1843 | <_> 1844 | 21 10 1 2 3. 1845 | 0 1846 | <_> 1847 | 1848 | <_> 1849 | 21 1 21 6 -1. 1850 | <_> 1851 | 21 3 21 2 3. 1852 | 0 1853 | <_> 1854 | 1855 | <_> 1856 | 21 8 4 3 -1. 1857 | <_> 1858 | 22 8 2 3 2. 1859 | 0 1860 | <_> 1861 | 1862 | <_> 1863 | 21 9 3 4 -1. 1864 | <_> 1865 | 22 9 1 4 3. 1866 | 0 1867 | <_> 1868 | 1869 | <_> 1870 | 21 10 4 2 -1. 1871 | <_> 1872 | 22 10 2 2 2. 1873 | 0 1874 | <_> 1875 | 1876 | <_> 1877 | 21 11 24 2 -1. 1878 | <_> 1879 | 27 11 12 2 2. 1880 | 0 1881 | <_> 1882 | 1883 | <_> 1884 | 21 18 4 1 -1. 1885 | <_> 1886 | 22 18 2 1 2. 1887 | 0 1888 | <_> 1889 | 1890 | <_> 1891 | 22 3 4 1 -1. 1892 | <_> 1893 | 23 3 2 1 2. 1894 | 0 1895 | <_> 1896 | 1897 | <_> 1898 | 22 6 2 6 -1. 1899 | <_> 1900 | 22 6 1 3 2. 1901 | <_> 1902 | 23 9 1 3 2. 1903 | 0 1904 | <_> 1905 | 1906 | <_> 1907 | 22 7 3 3 -1. 1908 | <_> 1909 | 23 8 1 1 9. 1910 | 0 1911 | <_> 1912 | 1913 | <_> 1914 | 22 8 3 5 -1. 1915 | <_> 1916 | 23 8 1 5 3. 1917 | 0 1918 | <_> 1919 | 1920 | <_> 1921 | 22 9 3 2 -1. 1922 | <_> 1923 | 23 9 1 2 3. 1924 | 0 1925 | <_> 1926 | 1927 | <_> 1928 | 23 8 3 3 -1. 1929 | <_> 1930 | 24 8 1 3 3. 1931 | 0 1932 | <_> 1933 | 1934 | <_> 1935 | 23 10 3 2 -1. 1936 | <_> 1937 | 24 10 1 2 3. 1938 | 0 1939 | <_> 1940 | 1941 | <_> 1942 | 24 3 20 17 -1. 1943 | <_> 1944 | 29 3 10 17 2. 1945 | 0 1946 | <_> 1947 | 1948 | <_> 1949 | 24 4 14 6 -1. 1950 | <_> 1951 | 31 4 7 6 2. 1952 | 0 1953 | <_> 1954 | 1955 | <_> 1956 | 24 18 9 2 -1. 1957 | <_> 1958 | 27 18 3 2 3. 1959 | 0 1960 | <_> 1961 | 1962 | <_> 1963 | 25 5 8 4 -1. 1964 | <_> 1965 | 25 5 4 4 2. 1966 | 1 1967 | <_> 1968 | 1969 | <_> 1970 | 25 6 22 14 -1. 1971 | <_> 1972 | 36 6 11 14 2. 1973 | 0 1974 | <_> 1975 | 1976 | <_> 1977 | 25 12 28 8 -1. 1978 | <_> 1979 | 25 14 28 4 2. 1980 | 0 1981 | <_> 1982 | 1983 | <_> 1984 | 25 14 9 3 -1. 1985 | <_> 1986 | 25 15 9 1 3. 1987 | 0 1988 | <_> 1989 | 1990 | <_> 1991 | 26 2 27 18 -1. 1992 | <_> 1993 | 35 2 9 18 3. 1994 | 0 1995 | <_> 1996 | 1997 | <_> 1998 | 26 3 22 3 -1. 1999 | <_> 2000 | 26 4 22 1 3. 2001 | 0 2002 | <_> 2003 | 2004 | <_> 2005 | 26 4 8 4 -1. 2006 | <_> 2007 | 30 4 4 4 2. 2008 | 0 2009 | <_> 2010 | 2011 | <_> 2012 | 26 4 20 6 -1. 2013 | <_> 2014 | 31 4 10 6 2. 2015 | 0 2016 | <_> 2017 | 2018 | <_> 2019 | 26 7 1 12 -1. 2020 | <_> 2021 | 22 11 1 4 3. 2022 | 1 2023 | <_> 2024 | 2025 | <_> 2026 | 26 9 3 3 -1. 2027 | <_> 2028 | 27 9 1 3 3. 2029 | 0 2030 | <_> 2031 | 2032 | <_> 2033 | 26 13 9 3 -1. 2034 | <_> 2035 | 26 14 9 1 3. 2036 | 0 2037 | <_> 2038 | 2039 | <_> 2040 | 27 3 15 6 -1. 2041 | <_> 2042 | 32 3 5 6 3. 2043 | 0 2044 | <_> 2045 | 2046 | <_> 2047 | 27 9 3 1 -1. 2048 | <_> 2049 | 28 9 1 1 3. 2050 | 0 2051 | <_> 2052 | 2053 | <_> 2054 | 27 9 3 2 -1. 2055 | <_> 2056 | 28 9 1 2 3. 2057 | 0 2058 | <_> 2059 | 2060 | <_> 2061 | 27 10 3 3 -1. 2062 | <_> 2063 | 28 10 1 3 3. 2064 | 0 2065 | <_> 2066 | 2067 | <_> 2068 | 27 11 3 2 -1. 2069 | <_> 2070 | 28 11 1 2 3. 2071 | 0 2072 | <_> 2073 | 2074 | <_> 2075 | 28 2 10 4 -1. 2076 | <_> 2077 | 28 2 10 2 2. 2078 | 1 2079 | <_> 2080 | 2081 | <_> 2082 | 28 8 32 6 -1. 2083 | <_> 2084 | 28 10 32 2 3. 2085 | 0 2086 | <_> 2087 | 2088 | <_> 2089 | 28 10 3 1 -1. 2090 | <_> 2091 | 29 10 1 1 3. 2092 | 0 2093 | <_> 2094 | 2095 | <_> 2096 | 28 11 3 1 -1. 2097 | <_> 2098 | 29 11 1 1 3. 2099 | 0 2100 | <_> 2101 | 2102 | <_> 2103 | 28 15 5 4 -1. 2104 | <_> 2105 | 28 16 5 2 2. 2106 | 0 2107 | <_> 2108 | 2109 | <_> 2110 | 28 16 23 4 -1. 2111 | <_> 2112 | 28 17 23 2 2. 2113 | 0 2114 | <_> 2115 | 2116 | <_> 2117 | 28 19 6 1 -1. 2118 | <_> 2119 | 30 19 2 1 3. 2120 | 0 2121 | <_> 2122 | 2123 | <_> 2124 | 29 3 9 4 -1. 2125 | <_> 2126 | 32 3 3 4 3. 2127 | 0 2128 | <_> 2129 | 2130 | <_> 2131 | 29 5 9 1 -1. 2132 | <_> 2133 | 32 5 3 1 3. 2134 | 0 2135 | <_> 2136 | 2137 | <_> 2138 | 29 8 3 6 -1. 2139 | <_> 2140 | 30 8 1 6 3. 2141 | 0 2142 | <_> 2143 | 2144 | <_> 2145 | 29 9 3 1 -1. 2146 | <_> 2147 | 30 9 1 1 3. 2148 | 0 2149 | <_> 2150 | 2151 | <_> 2152 | 29 11 10 4 -1. 2153 | <_> 2154 | 29 13 10 2 2. 2155 | 0 2156 | <_> 2157 | 2158 | <_> 2159 | 29 11 26 8 -1. 2160 | <_> 2161 | 29 13 26 4 2. 2162 | 0 2163 | <_> 2164 | 2165 | <_> 2166 | 30 0 16 6 -1. 2167 | <_> 2168 | 30 3 16 3 2. 2169 | 0 2170 | <_> 2171 | 2172 | <_> 2173 | 30 2 30 6 -1. 2174 | <_> 2175 | 30 2 15 3 2. 2176 | <_> 2177 | 45 5 15 3 2. 2178 | 0 2179 | <_> 2180 | 2181 | <_> 2182 | 30 3 9 4 -1. 2183 | <_> 2184 | 33 3 3 4 3. 2185 | 0 2186 | <_> 2187 | 2188 | <_> 2189 | 30 5 9 4 -1. 2190 | <_> 2191 | 30 6 9 2 2. 2192 | 0 2193 | <_> 2194 | 2195 | <_> 2196 | 30 10 3 2 -1. 2197 | <_> 2198 | 31 10 1 2 3. 2199 | 0 2200 | <_> 2201 | 2202 | <_> 2203 | 30 14 18 6 -1. 2204 | <_> 2205 | 36 14 6 6 3. 2206 | 0 2207 | <_> 2208 | 2209 | <_> 2210 | 31 3 4 3 -1. 2211 | <_> 2212 | 32 3 2 3 2. 2213 | 0 2214 | <_> 2215 | 2216 | <_> 2217 | 31 7 4 9 -1. 2218 | <_> 2219 | 32 7 2 9 2. 2220 | 0 2221 | <_> 2222 | 2223 | <_> 2224 | 31 11 3 2 -1. 2225 | <_> 2226 | 32 11 1 2 3. 2227 | 0 2228 | <_> 2229 | 2230 | <_> 2231 | 31 11 3 3 -1. 2232 | <_> 2233 | 32 11 1 3 3. 2234 | 0 2235 | <_> 2236 | 2237 | <_> 2238 | 32 4 3 2 -1. 2239 | <_> 2240 | 33 4 1 2 3. 2241 | 0 2242 | <_> 2243 | 2244 | <_> 2245 | 32 6 18 6 -1. 2246 | <_> 2247 | 32 6 9 3 2. 2248 | <_> 2249 | 41 9 9 3 2. 2250 | 0 2251 | <_> 2252 | 2253 | <_> 2254 | 33 1 22 6 -1. 2255 | <_> 2256 | 33 4 22 3 2. 2257 | 0 2258 | <_> 2259 | 2260 | <_> 2261 | 33 3 4 2 -1. 2262 | <_> 2263 | 34 3 2 2 2. 2264 | 0 2265 | <_> 2266 | 2267 | <_> 2268 | 33 3 4 4 -1. 2269 | <_> 2270 | 34 3 2 4 2. 2271 | 0 2272 | <_> 2273 | 2274 | <_> 2275 | 33 5 4 1 -1. 2276 | <_> 2277 | 34 5 2 1 2. 2278 | 0 2279 | <_> 2280 | 2281 | <_> 2282 | 33 9 3 6 -1. 2283 | <_> 2284 | 34 9 1 6 3. 2285 | 0 2286 | <_> 2287 | 2288 | <_> 2289 | 33 10 3 3 -1. 2290 | <_> 2291 | 34 10 1 3 3. 2292 | 0 2293 | <_> 2294 | 2295 | <_> 2296 | 34 8 4 7 -1. 2297 | <_> 2298 | 35 8 2 7 2. 2299 | 0 2300 | <_> 2301 | 2302 | <_> 2303 | 34 9 3 5 -1. 2304 | <_> 2305 | 35 9 1 5 3. 2306 | 0 2307 | <_> 2308 | 2309 | <_> 2310 | 34 18 9 2 -1. 2311 | <_> 2312 | 37 18 3 2 3. 2313 | 0 2314 | <_> 2315 | 2316 | <_> 2317 | 35 0 8 6 -1. 2318 | <_> 2319 | 37 0 4 6 2. 2320 | 0 2321 | <_> 2322 | 2323 | <_> 2324 | 35 9 3 2 -1. 2325 | <_> 2326 | 36 9 1 2 3. 2327 | 0 2328 | <_> 2329 | 2330 | <_> 2331 | 36 9 24 9 -1. 2332 | <_> 2333 | 42 9 12 9 2. 2334 | 0 2335 | <_> 2336 | 2337 | <_> 2338 | 37 1 16 18 -1. 2339 | <_> 2340 | 41 1 8 18 2. 2341 | 0 2342 | <_> 2343 | 2344 | <_> 2345 | 37 11 20 8 -1. 2346 | <_> 2347 | 42 11 10 8 2. 2348 | 0 2349 | <_> 2350 | 2351 | <_> 2352 | 38 8 15 12 -1. 2353 | <_> 2354 | 38 12 15 4 3. 2355 | 0 2356 | <_> 2357 | 2358 | <_> 2359 | 39 6 12 8 -1. 2360 | <_> 2361 | 45 6 6 8 2. 2362 | 0 2363 | <_> 2364 | 2365 | <_> 2366 | 40 8 8 4 -1. 2367 | <_> 2368 | 40 8 8 2 2. 2369 | 1 2370 | <_> 2371 | 2372 | <_> 2373 | 40 10 3 1 -1. 2374 | <_> 2375 | 41 10 1 1 3. 2376 | 0 2377 | <_> 2378 | 2379 | <_> 2380 | 40 10 3 5 -1. 2381 | <_> 2382 | 41 10 1 5 3. 2383 | 0 2384 | <_> 2385 | 2386 | <_> 2387 | 40 13 12 6 -1. 2388 | <_> 2389 | 43 13 6 6 2. 2390 | 0 2391 | <_> 2392 | 2393 | <_> 2394 | 41 5 7 15 -1. 2395 | <_> 2396 | 41 10 7 5 3. 2397 | 0 2398 | <_> 2399 | 2400 | <_> 2401 | 41 6 12 6 -1. 2402 | <_> 2403 | 45 6 4 6 3. 2404 | 0 2405 | <_> 2406 | 2407 | <_> 2408 | 41 7 12 7 -1. 2409 | <_> 2410 | 45 7 4 7 3. 2411 | 0 2412 | <_> 2413 | 2414 | <_> 2415 | 41 8 12 12 -1. 2416 | <_> 2417 | 45 8 4 12 3. 2418 | 0 2419 | <_> 2420 | 2421 | <_> 2422 | 41 9 3 6 -1. 2423 | <_> 2424 | 42 9 1 6 3. 2425 | 0 2426 | <_> 2427 | 2428 | <_> 2429 | 42 2 3 13 -1. 2430 | <_> 2431 | 43 2 1 13 3. 2432 | 0 2433 | <_> 2434 | 2435 | <_> 2436 | 42 4 18 10 -1. 2437 | <_> 2438 | 42 4 9 5 2. 2439 | <_> 2440 | 51 9 9 5 2. 2441 | 0 2442 | <_> 2443 | 2444 | <_> 2445 | 42 5 18 8 -1. 2446 | <_> 2447 | 42 5 9 4 2. 2448 | <_> 2449 | 51 9 9 4 2. 2450 | 0 2451 | <_> 2452 | 2453 | <_> 2454 | 42 7 2 7 -1. 2455 | <_> 2456 | 43 7 1 7 2. 2457 | 0 2458 | <_> 2459 | 2460 | <_> 2461 | 42 14 12 5 -1. 2462 | <_> 2463 | 46 14 4 5 3. 2464 | 0 2465 | <_> 2466 | 2467 | <_> 2468 | 43 1 10 9 -1. 2469 | <_> 2470 | 40 4 10 3 3. 2471 | 1 2472 | <_> 2473 | 2474 | <_> 2475 | 43 6 6 6 -1. 2476 | <_> 2477 | 43 9 6 3 2. 2478 | 0 2479 | <_> 2480 | 2481 | <_> 2482 | 44 0 8 20 -1. 2483 | <_> 2484 | 46 0 4 20 2. 2485 | 0 2486 | <_> 2487 | 2488 | <_> 2489 | 44 2 16 12 -1. 2490 | <_> 2491 | 44 2 8 6 2. 2492 | <_> 2493 | 52 8 8 6 2. 2494 | 0 2495 | <_> 2496 | 2497 | <_> 2498 | 44 5 3 8 -1. 2499 | <_> 2500 | 45 5 1 8 3. 2501 | 0 2502 | <_> 2503 | 2504 | <_> 2505 | 44 8 3 4 -1. 2506 | <_> 2507 | 45 8 1 4 3. 2508 | 0 2509 | <_> 2510 | 2511 | <_> 2512 | 44 12 16 4 -1. 2513 | <_> 2514 | 52 12 8 4 2. 2515 | 0 2516 | <_> 2517 | 2518 | <_> 2519 | 44 13 10 3 -1. 2520 | <_> 2521 | 49 13 5 3 2. 2522 | 0 2523 | <_> 2524 | 2525 | <_> 2526 | 45 19 9 1 -1. 2527 | <_> 2528 | 48 19 3 1 3. 2529 | 0 2530 | <_> 2531 | 2532 | <_> 2533 | 46 3 8 8 -1. 2534 | <_> 2535 | 50 3 4 8 2. 2536 | 0 2537 | <_> 2538 | 2539 | <_> 2540 | 47 12 10 6 -1. 2541 | <_> 2542 | 52 12 5 6 2. 2543 | 0 2544 | <_> 2545 | 2546 | <_> 2547 | 48 0 4 13 -1. 2548 | <_> 2549 | 49 0 2 13 2. 2550 | 0 2551 | <_> 2552 | 2553 | <_> 2554 | 48 5 3 12 -1. 2555 | <_> 2556 | 45 8 3 6 2. 2557 | 1 2558 | <_> 2559 | 2560 | <_> 2561 | 48 9 12 8 -1. 2562 | <_> 2563 | 54 9 6 8 2. 2564 | 0 2565 | <_> 2566 | 2567 | <_> 2568 | 48 13 12 4 -1. 2569 | <_> 2570 | 54 13 6 4 2. 2571 | 0 2572 | <_> 2573 | 2574 | <_> 2575 | 49 8 3 1 -1. 2576 | <_> 2577 | 50 8 1 1 3. 2578 | 0 2579 | <_> 2580 | 2581 | <_> 2582 | 49 8 3 2 -1. 2583 | <_> 2584 | 50 8 1 2 3. 2585 | 0 2586 | <_> 2587 | 2588 | <_> 2589 | 49 8 3 3 -1. 2590 | <_> 2591 | 50 8 1 3 3. 2592 | 0 2593 | <_> 2594 | 2595 | <_> 2596 | 50 9 3 3 -1. 2597 | <_> 2598 | 51 10 1 1 9. 2599 | 0 2600 | <_> 2601 | 2602 | <_> 2603 | 51 8 3 3 -1. 2604 | <_> 2605 | 52 8 1 3 3. 2606 | 0 2607 | <_> 2608 | 2609 | <_> 2610 | 52 6 6 10 -1. 2611 | <_> 2612 | 54 6 2 10 3. 2613 | 0 2614 | <_> 2615 | 2616 | <_> 2617 | 52 7 8 7 -1. 2618 | <_> 2619 | 56 7 4 7 2. 2620 | 0 2621 | <_> 2622 | 2623 | <_> 2624 | 52 8 8 4 -1. 2625 | <_> 2626 | 52 8 8 2 2. 2627 | 1 2628 | <_> 2629 | 2630 | <_> 2631 | 54 3 6 15 -1. 2632 | <_> 2633 | 57 3 3 15 2. 2634 | 0 2635 | <_> 2636 | 2637 | <_> 2638 | 54 8 6 7 -1. 2639 | <_> 2640 | 57 8 3 7 2. 2641 | 0 2642 | <_> 2643 | 2644 | <_> 2645 | 57 11 3 6 -1. 2646 | <_> 2647 | 57 13 3 2 3. 2648 | 0 2649 | <_> 2650 | 2651 | <_> 2652 | 59 8 1 3 -1. 2653 | <_> 2654 | 59 9 1 1 3. 2655 | 0 2656 | 2657 | --------------------------------------------------------------------------------