Code Samples

 

  • Code Samples

このページでは、Adaptive Vision Libraryの機能とスタイルを非常短いコードで紹介しています。コード全部やサンプルアプリケーションを見るには、製品と一緒にインストールされる正式サンプルコードを参照してください。

 

 

  adaptive.png

Image Processing

    • もっとも典型的な画像処理ツールの一つに平滑フィルターがあります。ガウシアンとメディアンによるノイズ除去を示します。 image1 は入力、image2 は出力です。
    •  

SmoothImage_Gauss( image1, NIL, 2.0f, 2.0f, 2.5f, image2 ); SmoothImage_Median( image1, SmoothImageMedianKernel::Box, 3, NIL, NIL, image2 );

 

 image1 入力              image2 出力(ガウシアン)       image2 出力(メディアン)

radiator_input.png   radiator_output.png   radiator_output2.png

領域解析

    • 領域とは一連の画素の集まりや圧縮された二値画像のことを言います。下記のコードは、赤い領域を抽出し、後処理したものです。

       


Region region1, region2, region3, region4;
ThresholdToRegion_HSx(image1, NIL, HSxColorModel::HSV, 0, 10, 190, 255, 65, 255, region1);
CloseRegion(region1, RegionMorphologyKernel::Ellipse, 15, 15, region2);
FillRegionHoles(region2, RegionConnectivity::EightDirections, NIL, 10000, region3);
DrawRegion(image1, region3, Pixel(0,255,0), 1.0);
OpenRegion(region3, RegionMorphologyKernel::Ellipse, 15, 15, region4);
DrawRegion(image1, region4, Pixel(255,0,0), 1.0);
 

 

 input                                                          output

rubber_input.png   rubber_output.png    

バーコード

    • DataMatrix コードは、2ステップで読みます。最初に候補を見つけ、その後。見つけた場所でコードを認識します。
 
Array positions;
DetectDataMatrices(image1, NIL, false, positions);

Conditional code;
RecognizeSingleDataMatrix(image1, positions, NIL, NIL, code);
if (code != NIL)
{
	DrawingStyle style( DrawingMode::HighQuality, 1.0f, 3.0f, false, NIL, 2.0 );
	DrawRectangle(image1, code.Get().Position(), NIL, Pixel(255,0,0), style);
	DrawString(image1, code.Get().Text(), Location(120, 20), Pixel(255,0,0), style, 12.0f, 0.0f);
}
 

 

 input                                                          output

datamatrix_input.png   datamatrix_output.png    

形状モデルフィッティング

    • 形状モデルフィッティングでは、あらかじめ大体の場所がわかっている形状にたいして正確に位置を特定することができます。ここでは、2ステップで部分フィッティングする方法を示します。フィッティングマップを作成後、フィッティングを実行するやり方です。

       

 
// Create shape fitting map
SegmentFittingField field( Segment2D( 40.0f, 30.0f, 40.0f, 130.0f ), 30.0f );
SegmentFittingMap map;
CreateSegmentFittingMap( image1, field, NIL, 12, 5, InterpolationMethod::Bilinear, map);

// Fit the shape
EdgeScanParams params;
params.minMagnitude = 10.0f;
params.edgeTransition = EdgeTransition::BrightToDark;
Conditional segment;
FitSegmentToEdges( image1, map, 0.1f, params, Selection::Best, NIL, segment );
if (segment != NIL)
{
	DrawingStyle style( DrawingMode::HighQuality, 1.0f, 2.0f, false, NIL, 0.0f );
	DrawSegment( image1, segment.Get(), NIL, Pixel(255, 0, 0), style, MarkerType::None, 0.0f );
}
 

 

 input                                                      output                                                   診断

plate_input.png   plate_output.png   plate_diagnostics.png

テンプレートマッチング(エッジベース)

    • テンプレートマッチング技術により、任意の位置で回転しているオブジェクトを検索することができます。典型的なアプリケーションの例は、電子回路上の基準マーカーの検出です。

       

 
Image image1;
LoadImage("fiducial_template.png", false, image1);

EdgeModel model;
CreateEdgeModel(image1, NIL, -2.0f, NIL, 0.0f, 60.0f, 40.0f, -45.0f, +45.0f, 1.0f, 1.0f, 1.0f, 1.0f, NIL, model);

Image image2;
LoadImage("fiducial_input.png", false, image2);

Conditional object;
LocateSingleObject_Edges(image2, NIL, model, 1, 3, 0.65f, 8.0f, true, object);
if (object != NIL)
{
	DrawingStyle style( DrawingMode::HighQuality, 1.0f, 3.0f, false, NIL, 2.0 );
	DrawRectangle(image2, object.Get().Match(), NIL, Pixel(255,0,0), style);
}
 

 

 テンプレート               input                                                    output

fiducial_template.png   fiducial_input.png   fiducial_output.png

GigE Vision 画像入力

    • アダプティブビジョンライブラリは、すべてのGigE VisionとGenICam対応カメラ、およびフレームグラバからの画像入力をサポートしています。ここでは、GigE Visionデバイスからの画像入力のプログラムを示します。

 

 
// Initialize acquisition
GigEHandle hDev = GigEVision_OpenDevice("169.254.1.81");
GigEVision_StartAcquisition(hDev, "Mono8");

Image image;
while (...)
{
	// Grab image
	GigEVision_ReceiveImage(hDev, image1);

	// Process image
	...
}

// Finalize acquisition
avl::GigEVision_StopAcquisition(hDev);
avl::GigEVision_CloseHandle(hDev);

    • Adaptive Visionのサイトが開きます
    • サンプル・デモ機のお申し込み
    • メールでのお問い合わせはこちら
    • お問い合わせフォーム