Igor Polkovnikov (Igor Polk)
Professional Profile and Detailed Resume

(510)582-8711, ipolk@virtuar.com  2108 Oak Creek Pl., Hayward, CA 94541, USA

LinkedIn | Compact Resume | Personal Website


Software Engineer in C++ on MS Windows is looking for a job related to image analysis, machine vision, computer vision, image processing, or industrial automation. I can not consider myself an expert in IA, but I'd like to apply my C++ software skills in this areas.


  • C++, C, C#, HTML, XML, XSLT, Java script, CSS, Python
  • Windows 7/XP/2000/NT/98/95/3.1
  • STL, Multithreading, Windows API, CRT, MFC, COM, ActiveX, DLL and static Libs


  • KLA-Tencor: stitching of circular images, C++, Windows, Linux, Python;
  • Intuitive Surgical: NPI, stereo endoscope verification equipment and software, maintained existing code and developed 3 new projects, C++, Python;
  • Infosys:  Internet server-client for testing XML communications; Cisco, an intranet website-tutorial, C#, HTML, Javascript, XSLT;
  • Yes  San Francisco LLC: Virtual tour production ("Street View"), Java, HTML, C++, C#
  • AB-Software: Image analysis, image processing, and video software, GigE, C++;
  • Incyte Genomics: Image analysis program to analyze DNA microarrays, C++;
  • MRS Inc: A real-time control of a complex machine, MFC, STL, C++;
  • CoreTek Inc: Software consulting, framework libraries, graphical editors, cross-platform development with Mac and UNIX;
  • Creative Labs: Graphical editor for collaboration over network, MFC, C++;
  • Computer Curriculum Corporation: Framework cross platform libraries for interactive educational software, animation, Windows and Mac, C;


Design, coding, documentation, problem solving, debugging, white box testing, prototyping, profiling, delivering the final product, ...

Areas of expertise

C++, STL, C++ Templates, Generic programming, GUI, Graphics, Video, Animation, Interactivity, Image Analysis, Image Processing, Software design, Manufacturing environment, Cross platform development, Website design and promotion, Education, Genomics, Machine control, Basic electronics (analog and discrete digital), Professional photography, Instruction, Virtual Dance, Virtual Tours, Pseudo-Stereo, Systematic Innovation, Quality management through innovation techniques of TRIZ


  • Developing robust, maintainable, fast, testable programs and tools through all stages. Utilizing available libraries, technologies. Vision of advantages of object oriented design and generic programming. Keeping code simple, clear, easy to read. Software strategy: developing code along with supporting test cases, design for testability, wide use of test drivers and test agents. Analysis and design for performance; Understanding that maintain-ability requires significant design and coding efforts.
  • Troubleshooting and debugging of complex code. Reverse-engineering. Streamlining, optimization, transformation of legacy code;
  • Appreciating advantages of knowledge exchange and clear documentation;
  • Efficient use of collaboration between colleagues. Supporting broad thinking, openness, creative, cooperative working environment. Experienced in Systematic Innovation, brainstorming, quality improvement (TRIZ); Documentation, Agile;
  • Finding optimal and simple solutions. Thorough investigation and choice of system-defining classes and algorithms. STL style. Optimal structurizing into classes and data structures, functions, files; use of templates leads to decrease of complexity therefore better human productivity. Code reuse, libraries, modules. Awareness of  impact of small modifications. State machine approach. Love for diagramming.

Academic qualification

MSEE (Soviet Union, Minsk) in Automatic Control Systems, 1984; TRIZ school


20 years software engineering, industrial automation, research;  10 years photography; 2 years web design

Personal skills

  • Interested in making the job done and with high quality;
  • Is able to identify and analyze problems, finding roots of problems, and solve them;
  • Creative, able to find unusual, innovative solutions;
  • Is able to prioritize, structurize tasks;
  • Helpful and supportive;

Interests computer science

  • Morphological algorithms, wavefront algorithms, image enhancement, filtration, segmentation, noise reduction, concavity tree;
  • Processing of gray images for asynchronous parallel processors;
  • Algorithms of shape determination on binary and gray level images. Recognition of alphabetical symbols and hieroglyphs; Topological and topographical approaches.
  • Processor design for fast execution of wave-front algorithms;
  • Artificial Intelligence based on Systems concept;
  • Automatic problem solving algorithms of inventive problems and knowledge presentation for inventive problems;
  • Chris Nailor's implementation of recognition engine based on Bayes theorem;




2017 (one year)

KLA-Tencor, Software Engineer, contract


  • Conversion of mathematical, statistical algorithms written in Python to productive C++;
  • Redesign and update of stitching algorithms of images produced by a rotating camera in real time. Code is implemented within complex multithreaded software, C++, developed in VS, compiled in Linux.

2015 (one year)

Intuitive Surgical, Software Engineer, NPI, Stereo Endoscope production group


In the Vision group, as part of the team, responsible for design and implementation of systems and algorithms of production and testing equipment of the stereo imaging system of the surgical robot

  • Developed three new projects of stereo endoscope production equipment by creating and building projects using C++, Python, XML controlling cameras and electronic and moving equipment, and incorporating and making changes to image analysis Matlab modules designed by IA specialists. Cooperation in preparation of the official FDA documentation with a product manager. Prepared the design and software documentation for internal use:
    • Color calibration of a proprietary light engine using Radiant Zemax camera;
    • Cross-talk correction of the camera;
    • Production line verification of the camera depth of field (DOF) and other parameters;
  • Maintained, bug-fixed, tested other production line fixtures and software;
  • Worked in a team of s/w engineers, testers, image analysis component designers, mechanical and production engineers;
  • Modified and enhanced Matlab code;
  • Wrote documentation, performed IQ, OQ, and DQ (Design qualification);
  • Participated in design and discussion of other projects;
  • Diagrammed the software and the production line;

C++, Python, Matlab, Agile, SVN, Radiant Zemax camera, stage and motor control, VS 2013, 2012, 2008


R&D, Yes San Francisco, LLCwww.virtuar.com


  • Consulting for A&B Software [www.ab-soft.com] (All work was done telecommuting, remotely). The product obtained an award by the "Vision Systems Design" magazine in 2018: "A&B Software was presented with a prestigious gold-level award in the software category at the Fourth Annual Vision Systems Design Innovators Awards presentation. The Vision Systems Design 2018 Innovators Awards program reviews and recognizes the most innovative products and services in the vision and image processing industry";
  • Improvements to "Image Warp" production and scientific Image Analysis software [www.imagewarp.com];
  • Developed a generic template C++ library for image processing: optimized algorithms, iterators, functional objects on segments of images of any shape; Published on SourceForge under the Mozilla 2.0 license [sourceforge.net/projects/asynchwave/]. Results are presented in the article (see below);
  • Design and implementation of a module for Hamamatsu x-ray line cameras in ImageWarp. It interacts with the camera to acquire real-time scans assembling them into a constantly moving image along with immediate application of image processing. Extraction of frames of arbitrary size;
  • Detection and segmentation of regular patterns on periodic-patterned images. Spatial frequency of features was measured.
  • Design and implementation of video-file (AVI and other) reading support for GigE-supporting products utilizing DirectShow support for video; Image processing is applied to the video; The video then is transmitted via network. All parameters are variable and controllable from the receiving side.
  • For Yes San Francisco [www.virtuar.com/click.htm] developed in 2002 a concept of Virtual Walking Tour pre-dating Google's Street View. Implemented as web-sites in HTML and java;
  • Walking tour editing software in C++ for Windows;
  • Developed an interactive Java applets with animation to present walking photo tours on the Web and in a stand-alone version;
  • Photography and content design work. More than 10000 photos were produced; 
  • Developed a Web site for the on-line presentation, a Web-shop, 2002;
  • Performing search engine promotion, SEO. Achieved 1st place on Google on "San Francisco Virtual Tour " search and other searches;
  • Produced three CD products: "San Francisco Virtual Tour", "Alcatraz Virtual Tour", "Las Vegas Boulevard Virtual Tour".
  • Researched the concept of parallax effect stereo. This effect allows presentation of stereo images on the regular monitor without glasses;
  • Invented unified data-code diagrams.They are used to diagram actual software (not UML). See the reference to the article below;

Java, C++, C#, HTML, VS 2008, VS 2005, Visual Studio 6.0, Dreamweaver, Adobe Photoshop


Infosys, Cisco Consulting

  • Developed an intranet website-tutorial. XML, XSLT, Javascript, CSS, animations. Interface design is the same as of MSDN. Hundreds of pages with various graphical methods of GUI and information presentation and retrieval;
  • Studied physical security aggregating software, Honeywell Vindicator V5, DigiFort;
  • Helping in design, development and testing of integration modules. XML, .NET, C#
  • Developed a test internet server and client; .NET, C#. This was used to intercept and monitor XML exchange between various components on the network during development. When I came there, they were testing communications manually. I proposed an intermediate test server which saved time and efforts.


Dance Instructor, independent, Palo Alto, CA


  • Designed a promotional website with content and SEO; Dreamweaver, Photoshop. Hundreds of pages and photos;
  • Conducted numerous workshops up to 40 people and private instruction;
  • Worked on concepts of human body movement suitable for automatic generation of dances;
  • Wrote a dance theory book (see below) on human movements.


Sr. Software Engineer, Incyte Genomics, Inc., Palo Alto, CA.


Was responsible for an Image Analysis part of the production software. This is the program which received scanned images of 10,000x2 spots arranged in 2 big square fields, recognized the spots, and calculated a number for each spot corresponding to a value of a certain gene. These values were entered into a database, and then viewed and analyzed, automatically or manually by a database application called GemTools.

  • Owned the image processing project, including research and development of technological aspects, development of specifications, software architecture, design and implementation. Responsible for all aspects of the image processing software and algorithms at the Incyte Microarray facility;
  • Performed reverse-designing and wrote a diagram of the initial image analysis algorithms to use for further development and proof of their validity to researchers and customers;
  • Developed an algorithm of spot recognition robust to absence of spots. Used spatial frequency method to obtain the result.
  • Algorithms: improving reliability, implementing new imaging algorithms, and integrating new and innovative statistical data methods which dramatically improved the quality of the final result. Ported MatLab algorithms into C++.
  • Troubleshooted production issues;
  • Code: spent significant efforts reorganizing and streamlining the image processing code using generic programming methods. Wider use of functions, classes, STL, templates helped to reduce the amount of code, made testing easier and more comprehensive; It also greatly reduced implementation time and simplified bug fixing.
  • Designed and implemented STL-style basic template classes for image analysis;
  • Implemented code to generate detailed windows application logs;
  • Incorporated graphical data visualization third-party controls into GemTools for viewing and printing of the database Genomics data related to scans;
  • Developed a module "Element Display" for interactive browsing among spots ( dialog box, interactive graphical engine, acquiring data from the database and visualization ). Up to 10,000 GUI elements in a view;
  • Developed a module "CytoStain" (code, data algorithms, dialog box);
  • Developed GemTools module "GEM Groups", creating, acquiring and processing information about groups of scans in the database;
  • Incorporated TCL scripting engine into Image Analysis program and into the GemTools;
  • Incorporated PDF third-party printing library;
  • Participated in design of new GemTools modules and additions to the database schema and updated image analysis program to work with the new database schema;
  • Provided software support for research in statistical improvement of the quality of the output data;
  • Designed the next version of the image analysis product capable of the whole human genome processing (100,000 genes in one scan) and directed outside contractors to implement it.
  • Wrote documentation and drawings.

VS C++, MS Windows, MFC, STL, image analysis, TCL


Sr. Software Engineer, MRS Inc., CA. (Magnetic Recording Solutions, Inc.)


Responsible for design and implementation of a real-time control and data collection program for a complex high-speed magnetic media certifying machine for hard drive industry. It was the first program in the industry implemented on Windows NT with multithreading. The program reads a number of complex system and data files, assembles the sequence of control algorithms, performs actions in automatic and manual modes, reacts to interrupts, acquires data from hardware, processes and stores data, collects statistics, informs operators about actions, reflects hardware parameters and data, performs error handling, cancel and abort functionality.

  • Designed from specifications the main production multithreaded program. Wrote and debugged the code. Wrote documentation;
  • Designed and wrote the data processing library used in the main and other two supporting programs in the system;
  • Implemented a simple Windows NT Direct Port I/O driver to access hardware directly;
  • Debugged and tested operations of the program on the actual machine;
  • To check validity and timing of data processing algorithms developed automatic test drivers. State machine approach to the data processing design ensured the success;
  • Used MFC and ActiveX in design and implementation of GUI;
  • Used STL to implement data objects and perform efficient collection of and pattern recognition on acquired data;
  • Where efficient, templates and C++ inheritance and polymorphism where used;
  • Adopted TCL engine for use as an interactive runtime debugging and tracing tool.


Software Engineer, CoreTek Inc., CA.


Three lead engineers from CCC established a start-up consulting company and convinced me to join them as the first employee. Here I dived into 24-hours of development and programming of new modules along with concurrent work on complex software systems and bug fixing. The work was mostly done telecommuting.

  • Palladium Interactive: Worked on Genealogy software;
  • Scopus: Development of new modules and porting to UNIX using Bristol technology. New modules included porting of windows controls controlled by TCL scripts from the database application, Emulation of try/catch exception functionality;
  • Mindscape: Debugged ported PrintMaster;
  • EnRoute: Worked on QuickStitch, image manipulation program: Windows design for MS cross compiler;
  • Designed C++ framework library and C++ graphical library;
  • other projects including Netscape programming, a graphic editor, writing custom windows controls.

MFC, GUI, ODBC, TCL interpreter, Internet, in Windows 95, Windows NT, MS SQL Server, MAC, Unix-shells, Windows3.1.


Software Engineer, Creative Labs Inc., Milpitas, CA.


It was a division newly acquired by Creative Labs which produced a Shared Whiteboard Application used by US Navy. This is a graphical editor when a document is controlled simultaneously by several parties over the network. I was responsible for design and implementation of the next generation of it, multi-windowed. Here I have started to work with 32 bits of Win95 with MFC3.2 in Visual C++ 2.2. My part was a general purpose MFC MDI application. Designed and implemented a graphical C++ library. The main problem was scripting of MFC windows. I solved this with the approach of connecting components in run time through a message mechanism with "systematic" messages. For example, the mouse module generated not WM_LBUTTONDOWN or WM_MOUSEMOVE, but IMPULS and SEQUENCE messages. This generic approach allowed very flexible combination of components in run time and re-connection of them to test agents.


Software Engineer III, Computer Curriculum Corporation (CCC)[Paramount Pictures], Sunnyvale, CA.


CCC, a subsidiary of Simon&Schuster, a subsidiary of Paramount Pictures, produced complex educational software for schools. The software run on Macintosh and Windows, but originated from Atari system. My responsibilities were to fix bugs in the framework library for cross-platform development and develop the next version with the support of interactive features, multiple windows (the system was one-window only), animation and movies.

Original software was a legacy software which had only one window. I have made it "multi-windowed". The successful approach I have chosen was to emulate Windows system API on Macintosh. C, C++, MPW

The new library provided support for the scripting engine used by the developers (C-interpreter), therefore objects like windows and controls had to be configurable and re-connectable at run time. Developed classes to support this functionality.


Research. San Francisco, CA.


Conducted private research in image analysis algorithms, super scalar processors, graph presentation, and automated creative problem solving;

Developed a method how to speed up and turn into superscalar ones a regular processors like Intel with the introduction of the very wide data bus. The main problem here is how to access any memory location, not necessarily word-bound. It was solved by the special memory design. With such design the transition to 64-bit processors processing 32-bit code would require much less memory. It is possible to design 1024-bit bus and processors without unneeded increase in memory size. This method is still applicable to modern processors. It would allow to make Intel 64-bit programs much smaller, and therefore faster.

Publication Igor Polk: “A memory to read out and write a block of words via one memory access from a random address”
in 1992 IEEE 26-th Asilomar Conference on Signals, Systems & Computers.

Wrote programs in Windows and C, C++, MSDOS, MS Windows, PROLOG.


Researcher, Minsk Medical Institute, USSR


Responsibilities included the research in image analysis algorithms and application to the medical field.

  • Researched image processing: morphological algorithms, image enhancement, filtration, segmentation, noise reduction, interactive (mouse) image modification of the microscopic and X-ray images;
  • Researched wavefront algorithms of the topological and topographical shape feature extraction on binary and gray level images. Created a system of such algorithms for recognition of alphabetical symbols and hieroglyphs. The system proved to be very robust to image and symbol distortions. For example, the letter 'a' and 'A', independently of size, lighting, variation in orientation, and noise where identified by the same feature. Publication: "Wavefront algorithms of topological feature extraction on gray level images";
  • Invented and designed a processor for fast execution of the wave-front algorithms; The main feature is accessing a pixel and 8 its neighbors via one memory access; This was not a trivial problem in the age of cache-less processors.
  • Researched in automatic problem solving algorithms of inventive problems and data representation for inventive problems. For example, the program successfully solved such problem: "there is a tightly closed barrel containing unknown liquid. The barrel is heating. Detect the moment when boiling starts". In case you want to try to solve it, there are multiple solutions;
  • Designed and wrote a medical diagnostic research program implementing Chris Nailor expert systems engine based on Bayes theorem in probability. I wrote this system 4 times in my life: in PROLOG, in Pascal, in C, and in C++.


Computer maintenance and support engineer, Minsk computer center of the ministry of trade, USSR


Maintaining PDP computers and data entry systems.


Automatic Control Systems Engineer, Mogilev Chemical Company, USSR


Responsibility included support for the main technological process control circuits of the large chemical plant, troubleshooting and repairing industrial electronic devices and sensors. The plant, designed in and built by West Germany engineers (Hoechst) consisted of 4 production lines in the building 300ft long and 4 stories high. Control circuits included 6 micro-processor-based computers, main computer, data collection computer, and numerous control electronics including sensors (it was before an era of total computerization).

  • Redesigned central control computer program for TI-550 to be adaptable to chemical process parameters and controllable by human operators. Originally, the process parameters of the original algorithm were hard coded in formulas making it impossible to modify, the code was messy. The streamlined design was made on a reserve computer, tested, and then software, at the working computer, was replaced smoothly with the minimal disturbance to production;
  • Improving and re-drawing schemas of and repaired gas analyzers, a power supply station, numerous digital control circuit boards and controllers, magnetic sensors;


1984, MSEE, Minsk Institute for Radioelectronics, (now BGUIR), USSR (Belarus now)
Studied: mathematics, physics, drawing, computer science (computers, programming, microprocessors), electronics (analog and digital), automatic systems control theory, English, writing, philosophy. Diploma: "Machine vision control system of a painting robot".

1983, Minsk TRIZ school. Based on the study of patents, methods used to develop strong solutions to inventive problems were collected. The course included the methods of system thinking and intensifying thinking process, 77 methods of solutions of contradictory problems, 44 principles to solve complex problems in technology, 7 trends in evolution of technical systems. The two-years course included intensive problem solving training in all areas of technology.


A book on innovation methods: "Junctions. On How Worlds are Connected", 2018;

Innovation methods conference TRIZCON2018, Purdue University, Lafayette. Two presentations: "Mathematics and Dialectics of Dance" and "David and Goliath. What Principles are Involved";

Construction of Convex Sets on Quadrilateral Ordered Tiles or Graphs with Propagation Neighborhood Operations. Dales, Concavity Structures. Application to Gray Image Analysis of Human-Readable Shapes. https://arxiv.org/abs/1608.08251;

Unified Control and Data Flow Diagrams Applied to Software Engineering and other Systems. https://arxiv.org/abs/1610.02374;

A human body movement theory book "Twist Forms". http://www.virtuar.com/tango/theory/tb0.htm;

A guitar book "Perfectly Aligning Guitar Frets and Strings with Notes on a Staff" describes a new method of presentation of musical symbols like notes for simplifying sight-reading skills learning. https://www.amazon.com/Perfectly-Aligning-Guitar-Frets-Strings/dp/B005HZX1DQ

Tango website; Virtual Tour website


Available upon request.


US citizen. Hobbies are mathematics, dancing, dance instruction, running, camping, guitar, reading