The Microsoft Vision SDK is a library for writing programs to perform image manipulation and analysis on computers running the Windows operating system. It is aimed at supporting researchers and developers of advanced applications, including real-time image processing. The Vision SDK is a low-level library, intended to provide a strong programming foundation for research and application development; it is not a high-level platform for end-users to experiment with imaging operations. The Vision SDK is a C++ library of object definitions, related software, and documentation for use with Microsoft Visual C++.
No. The Vision SDK can only be used in C++. It uses C++ templates and inline functions that can not be called from other programming languages.
The Vision SDK defines a file I/O interface that can be used to add support for new file formats, but the Vision SDK does not include much file I/O code. To read common graphics file formats, the Vision SDK includes code to use the ImageMagick library. The Vision SDK does include a custom MSV file type that can be used to read and write most images used with the Vision SDK, including multiband images and images with non-standard pixel types. There is also a file handler for BMP files, and there are sample file I/O handlers for PostScript (PS) and Portable Pix Map (PPM) files.
Some file formats, like bitmap (BMP) files, can use 32-bit RGBA pixel values that include alpha information or 24-bit RGB pixel values that don't include alpha information. Some applications can read files that use 24-bit RGB pixel values but not files that use 32-bit RGBA pixel values. By default, the Vision SDK includes alpha information when writing these file formats. Your application can call "CVisImageBase::SetIsAlphaWritten(false)" to tell the Vision SDK that alpha information should not be included when writing these file formats.
The only Image Processing functions contained in the Vision SDK are overloaded C++ operators (+, -,…) that work with images, image methods that convert between different image formats, and image methods that pad image borders.
The CVisImageBase:: CopyPixelsTo method can be used to copy pixel values from a grayscale image to a color image (that uses RGBA pixel values of the same numeric type). The global VisIntensityFromRGBA function can be used to get a grayscale image (CVisGrayByteImage) from a CVisRGBAByteImage.
The current release of the Vision SDK includes the MFC header files when compiling and links with the MFC libraries in DLLs. It is possible to use some Vision SDK functions in non-MFC applications, but care must be taken to avoid putting up dialogs or making other calls that depend on MFC. (If a function depends on MFC and the application does not use MFC, the function could cause the application to crash.)
You can download CLAPACK from http://www.netlib.org/. You'll need to create VC++ project files to build BLAS, CLAPACK, F77, and I77 libraries (with "DB" appended to the names of the debug libraries). Your projects should use the standard libraries in DLLs. (The easiest way to do this is to use MFC in a shared DLL.) When you have built these libraries, copy them to the LIB directory in the VisXCLAPACK project and build the VisXCLAPACK DLL. If the VisXCLAPACK DLL is on your path, the VisMatrix project can use it to call some CLAPACK functions.
If you have a DirectShow driver for your video capture device, you can use DirectShow with the Vision SDK to get images from your video capture device on Windows 98 and Windows 2000. You'll need to install the DirectX Media SDK (available from Microsoft's Web site) to the default location (c:\DXMedia) and add the c:\DXMedia\include and c:\DXMedia\Classes\Base directories to the top of the list of include directories used with VC++ and add the c:\DXMedia\lib directory to the list of library file directories used with VC++. Then you should be able to build the VisXRenderFil and VisXDS projects to get DLLs that can be used by the Vision SDK to get images from DirectShow video capture devices.
Some users in other parts of the world (far from Redmond, WA, USA) have had trouble downloading the Vision SDK. If you have tried repeatedly to download the Vision SDK and keep getting errors, you can send us email stating that you agree to our license agreement and would like us to send you the Vision SDK via email.
The Vision SDK uses a lot of templates and inline functions. Some users had problems using the VC++ 5.0 and VC++ 6.0 compilers to build the Vision SDK on Windows 95 and Windows 98. If you have this problem, we'd recommend that you download the full version of the Vision SDK so that you don't need to build the Vision SDK libraries. You may be able to work around this problem by going to the C / C++ tab in the Project / Settings dialog in VC++, selecting all configuations of all projects whose names begin with "Vis" or "Ex", choosing the Precompiled Headers category, and turning off Precompiled Headers. You should be able to use the VC++ 6.0 compiler to build the Vision SDK (with precompiled header files) on Windows NT.
The Vision SDK defines a file I/O interface that can be used to add support for new file formats, but the Vision SDK does not include much file I/O code. To read common graphics file formats, the Vision SDK includes code to use the ImageMagick library.
When the Vision SDK gets an image from a digitizer, it may need to copy or convert the image data to image data in a buffer that can be used with the Vision SDK. The Vision SDK is told about the image data in a "callback function". There could be some problems, like a reduced frame rate, if the Vision SDK spends too much time in the "callback function." To avoid these problems, the image data is not copied or converted in the "callback function". Instead, another thread is used to copy or convert the image data. This crash can happen if the digitizer invalidates the image data while the other thread is still trying to access it. This is more likely to happen with large images in YUV formats, because image conversion is slower for such images. It can happen with VFW devices, but it should not happen with the Matrox ® Meteor ® card. This has not been a big problem in practice, so we haven't felt a need to try to correct it.
The project files distributed with the Vision SDK were written for Visual C++ version 5.0. Visual C++ version 6.0 adds a new "edit and continue" PDB option. That option is turned on when the project files are converted to the Visual C++ version 6.0 format. It requires that incremental linking be turned on, but incremental linking is turned off in the Vision SDK project files.
You can safely ignore this warning. If it bothers you, you can edit the project settings (in the Project / Settings dialog) to turn on incremental linking (on the Link tab) or to use PDBs without the "edit and continue" information (on the Debug tab).
ImageMagick is "a package for display and interactive manipulation of images for the X Window System" that is available from http://www.wizards.dupont.com/cristy/ImageMagick.html. The Vision SDK can use ImageMagick to read and write common graphics file formats.
ImageMagick is available at http://www.wizards.dupont.com/cristy/ImageMagick.html. The version that can be used with the Vision SDK can be found by going to this page and clicking on the link to the download site for the Windows NT version. Get the larger ZIP file (with the release numbers in its name), not the file named "ImageMagick-nt.zip". (If you don't see a ZIP file but you do see a file whose name ends in ".tar.gz", you're probably in the wrong directory. Click on the "NT" link to go to the release directory for the Windows NT version of ImageMagick.)
You may have downloaded the wrong version of ImageMagick. Make sure that you downloaded the full Windows NT version (as described in the answer to the previous question).
Some earlier versions of ImageMagick may have written incorrect size information in BMP file headers. If you have this problem, you can try to work around it by commenting out the PrematureExit code that is called if (bmp_header.file_size - bmp_header.size) is larger than image->filesize in the ReadBMPImage function in the magick\decode.c file in the ImageMagick project. You shouldn't need to make this change unless you have a problem reading BMP files that you saved with an earlier version of ImageMagick.
One user reported that the compiler "hanged" while compiling decode.c in version 4.2.1 of ImageMagick. The problem was fixed by adding "#include" directives to include "magick.h", "dicom.h", and "logo.h" at the top of the "decode.c" file.
Some users have had problems getting the Vision SDK to work with this camera. To fix the problem, we need to tell the Vision SDK about the format of the images that it gets from the QuickCam ® VFW driver. It might be possible to do this by editing the registry keys used by the Vision SDK, but it may also be the case that the Vision SDK does not know about the formats used with this camera.
This has been reported with the Winnov ® video conferencing camera. We don't know why it happens. It only seems to happen with the Winnov ® camera. (Please let us know if you find that this happens with any other cameras.)
You can change the registry keys used by the VisMeteor project. The best way to do this is to edit a copy of the VisMeteor.reg file (in the VisMeteor project) and then double-click on the edited REG file to add the new registry entries.
No, the Vision SDK won't help with this. You'll need to use the Windows DDK and the MIL library functions to write a VFW driver. It may be difficult to write such a driver. We don't know of anyone who has done this.
The Hello World example program assumes that you have used ExCamera to select a default digitizer and that the ImageMagick and VisXImageMagick DLLs are available to save images.
The ExGrabBmp example program assumes that you have used ExCamera to select a default digitizer and that the ImageMagick and VisXImageMagick DLLs are available to save images.
Either the program could not find an available digitizer or the program could not get images from the digitizer. The program might not find an available digitizer if you don't have a digitizer on your computer, the registry entries for your digitizer are missing, the DLLs for your digitizer are not in your path, or there are other applications running that are using your digitizer(s).
This can happen if the Vision SDK does not recognize the format of the images that it's getting from your digitizer. This can also happen when your camera is not turned on, its lens is covered, its iris is closed, or it is not connected to your computer.
You can see if this is a problem with the Vision SDK by using another program to get images from your digitizer. With VFW devices, you can use the VisCap32.exe program to test your digitizer and adjust the compression, source, and format settings.
This will happen if you're not using ImageMagick with the Vision SDK, if you're using a file type that ImageMagick does not recognize, or if there's a problem with a particular file that you're trying to load. The Vision SDK should be able to open the files in the SampleImages directory if you're using ImageMagick. Even if you're not using ImageMagick, the Vision SDK should be able to open the "image2.ps" image file and it should be able to write "PS", "PPM", and "MSV" files.
The disappearing "image2.ps" image demonstrates an option (evispanedispNoOrigNoScrnBuf) that can be used to display images in Pane windows. The option specifies that the CVisPane object should not keep any copies of the image being displayed, so the CVisPane object can't redraw the image when the window needs to be refreshed.