Up | Example 01 - Calculate Area | Example 02 - Calculate mean value | Example 03 - Manipulate the results from two LineFinders | Example 04 - Dynamic threshold | Example 05 - Auto Exposure | Example 06 - DrawLine | Example 07 - Overlays | Example 08 - Python Objects | Example 09 - Timing | Example 10 - Image Averaging | Example 11 - Image Resampling | Example 12 - Constant Contrast | Example 13 - Serial Communication | Example 14 - Python results | Example 15 - Making a result string | Example 16 - Running tools from a script | Example 17 - Image Manipulation using Python Scripting | Example 18 - Calculating the median angle | Example 19 - Iterating objects located by a blob | Example 20 - Resampling using non-linear calibration | Example 21 - Custom Scorpion Python extension | Example 22 - Accessing Image Pixels | Example 23 - Implementing a tcp/ip Socket Server | Example 24 - Setting ExternalReference from calculated four points | Example 25 - Rotating a reference around in a circle | Example 26 - Grabbing an image from an MOXA Video IP Server | Example 27 - Toolbox Switch | Example 28 - Color Matcher Iteration | Example 29 - Audio Notification | Example 30 - Windows MessageBox | Example 31 -  Client to tcp Socket Server | Example 32 -  Read / Write External Data from / to file | Example 33 - Changing a tool's ROI | Example 34 - Histogram Equalization | Example 35 - Robust Adam 6060 scripts | Example 36 - Bubblesort | Example 37 - Element Statistics | Example 38 - Saving 3D Image | Example 39 - Disabling Zoom in Image Windows | Example 40 - Filtering timeseries | Example 41 - Scorpion Watchdog keep system running | Example 42 - Binary Search | Example 43 - Creating an ordered pointcloud | Example 44 - UDP Socket Communication

 

  

 
Example 11 - Image Resampling
This example is provided to show how to resample a part of an image

import arr,geom
#---------------------------------------------------------------------
# Resample 
# resamples 20x20 mm of originalImage - the origin is defined by the reference identified by referenceName
# the resulting image is of size 60 x 60 pixels and set to image imageName
#---------------------------------------------------------------------
def Resample(originalImage,referenceName,imageName):

  sub_x = 20.0 # section of original image in millimeters -
  sub_y = 20.0 # dimensions given by the reference system
  res_x = 60 # size of resampled image
  res_y = 60 # in pixels
  # get pointer to Reference tool
  t = GetTool(referenceName)
  ref = geom.m33f()
  ref.data = t.childRefSys
  if ( t.result['Status'] == 1 ):  # reference system is valid
     orgim = GetImageMatr(originalImage) # get image data
     # prepare resampling
     p = arr.gridPoints(res_x,res_y,1) # create regular grid matrix of size res_x by res_y, from (0,0)
     p = arr.toFix(p*geom.scal(sub_x/res_x,sub_y/res_y)*~ref) # overlay grid points on original image, using toFix for efficiency
     # resample image
     subim = arr.bilInterpolate(orgim,p) # extracts samples from orgim at positions given by p
     # set the resampled image to imageName 
     SetImageMatr(imageName,arr.toUint8(subim))

#--------------------------------------------------------------------

Such resampling is especially interesting and useful when one combines resampling with the powerful reference systems.

In the Scrabble example a letter is placed under the camera. The size and orientation of this letter may vary.

By establishing a reference system that finds the letter and by resampling one can produce a clean letter image

This image has the same size and orientation no matter how the camera or letter is positioned. 

 

Scorpion Vision Version XII : Build 646 - Date: 20170225
Scorpion Vision Software® is a registered trademark of Tordivel AS.
Copyright © 2000 - 2017 Tordivel AS.