임의적 ROI(ERegion)

참조: 예: Inspecting Pads Using Regions / 코드 스니핏: ERegion

영역 또는 임의적 ROI

관심 영역(ROI)을 정의하고 사용하여 비전 도구로 처리되는 영역을 제한하고 처리 시간을 줄이고 최적화합니다.

Open eVision에서:

ROI ( 클래EROIxxx형의 관심 영역을 지정합니다.
영역( 클래스)은 ERegion ROI를 지정합니다. 영역을 사용하면 하나의 픽셀까지 이미지의 어느 부분이 처리에 사용되는지 정확하게 결정할 수 있습니다.

현재 다음 메소드 Open eVision만 를 지원합니다:

라이브러리

방법

 

EasyImage::Threshold

 

EasyImage::Copy

 

EasyImage::ConvolKernel

 

EasyImage::ConvolSymmetricKernel

 

EasyImage::ConvolLowpass1

 

EasyImage::ConvolLowpass2

 

EasyImage::ConvolLowpass3

 

EasyImage::ConvolUniform

 

EasyImage::ConvolGaussian

 

EasyImage::ConvolHighpass1

 

EasyImage::ConvolHighpass2

 

EasyImage::ConvolGradientX

 

EasyImage::ConvolGradientY

 

EasyImage::ConvolGradient

 

EasyImage::ConvolSobelX

 

EasyImage::ConvolSobelY

 

EasyImage::ConvolSobel

 

EasyImage::ConvolPrewittX

 

EasyImage::ConvolPrewittY

 

EasyImage::ConvolPrewitt

 

EasyImage::ConvolRoberts

 

EasyImage::ConvolLaplacianX

 

EasyImage::ConvolLaplacianY

 

EasyImage::ConvolLaplacian8

 

EasyImage::DilateBox

 

EasyImage::ErodeBox

 

EasyImage::OpenBox

EasyImage

EasyImage::CloseBox

 

EasyImage::WhiteTopHatBox

 

EasyImage::BlackTopHatBox

 

EasyImage::MorphoGradientBox

 

EasyImage::ErodeDisk

 

EasyImage::DilateDisk

 

EasyImage::OpenDisk

 

EasyImage::CloseDisk

 

EasyImage::WhiteTopHatDisk

 

EasyImage::BlackTopHatDisk

 

EasyImage::MorphoGradientDisk

 

EasyImage::Median

 

EasyImage::ScaleRotate

 

EasyImage::DoubleThreshold

 

EasyImage::Histogram

 

EasyImage::Area

 

EasyImage::AreaDoubleThreshold

 

EasyImage::BinaryMoments

 

EasyImage::WeightedMoments

 

EasyImage::GravityCenter

 

EasyImage::PixelCount

 

EasyImage::PixelMax

 

EasyImage::PixelMin

 

EasyImage::PixelAverage

 

EasyImage::PixelStat

 

EasyImage::PixelVariance

 

EasyImage::PixelStdDev

 

EasyImage::PixelCompare

Easy3D

EDepthMapToMeshConverter::Convert

EDepthMapToPointCloudConverter::Convert

EStatistics::ComputePixelStatistics

EStatistics::ComputeStatistics

E3DObjectExtractor::Extract
EZMapToPointCloudConverter::Convert

EasyObject

EImageEncoder::Encode

EasyFind

EPatternFinder::Find

EPatternFinder::Learn
EasyOCR2 EOCR2::Read
EOCR2::Detect
EasyGauge EPointGauge::Measure
ELineGauge::Measure
ERectangleGauge::Measure
ECircleGauge::Measure
EWedgeGauge::Measure
EasyMatch EMatcher::LearnPattern
EMatcher::Match
EasyQRCode EQRCodeReader::SetSearchField
EQRCodeReader::Read

향후 Open eVision 배포에서는 의 지원이 모든 운영자에게 점차 확대될 것입니다.

영역 만들기

Open eVision는 필요한 모양에 따라 영역을 만드는 여러 가지 방법을 제공합니다.

은 모든ERegion 클래스이며 가장 융통성이 있습니다. RLE (Run-Length Encoded) 표현을 사용하여 영역을 인코딩합니다.

영역의 RLE 표현은 런(가로 1픽셀 높이 슬라이스)으로 구성됩니다.
런은 횡좌표와 길이로 시작하는 세로 좌표 형식으로 저장됩니다.

원형 영역의 런-길이 인코딩

영역을 만들려면 다음 중 하나를 수행합니다:

기하학 기반 영역 클래스 중 하나를 사용합니다.
EasyFind, EasyMatch 또는 EasyObject와 같은 다른 도구의 결과를 사용합니다.
다른 영역을 결합하거나 수정합니다.
마스크 이미지를 사용합니다.
직접 실행 목록을 제공합니다.

기하학 기반 영역

기하학 기반 영역은 단순한 기하학에 포함되는 특수화된 영역 클래스입니다. Open eVision는 현재 직사각형, 원, 타원 또는 다각형 기반의 클래스를 제공합니다.

이 클래스를 사용하여 기하학적 영역을 설정하고 변환, 회전 및 크기 조절을 사용하여 수정합니다. 변환 연산자는 소스 영역을 변경하지 않고 새로운 영역을 반환합니다.

ERectangleRegion
클래스의 윤곽선은 사각형입니다.ERectangleRegion
중심, 폭, 높이 및 각도를 사용하여 정의합니다.
또는 인스턴스에서 반환한 것과 같은 ERectangle다.ERectangle

백그라운드에서 바코드를 분리하는 사각형 영역

ECircleRegion
클래스의 윤곽선은 원입니다.ECircleRegion
중심과 반지름 또는 3개의 비 정렬점을 사용하여 정의합니다.
또는 인스턴스에서 반환한 것과 같은 ECircle용합니다.ECircle

X선 이미지의 유용한 부분을 포함하는 원형 영역

EEllipseRegion
클래스의 윤곽은 타원입니다.EEllipseRegion
중심, 길이 및 반경 및 각도를 사용하여 정의합니다.

와플을 둘러싸는 타원 영역

EPolygonRegion
클래스의 윤곽선은 다각형입니다.EPolygonRegion
정점 목록을 사용하여 생성됩니다.

키를 포함하는 다각형 영역

다른 도구의 결과 사용

클래스ERegion의 결과로 영역을 생성하는 전문 생성자 세트를 제공합니다.

도구 체인에서 이러한 생성자는 도구의 처리를 이전 도구에서 발행된 영역으로 제한합니다.

Open eVision는 다음 도구에 대한 생성자를 제공합니다:

EasyFind EFoundPattern
EasyMatch: EMatchPosition
EasyGauge: ECircleECircle
EasyObject: ECodedElement

호환 가능하면 Open eVision는 기하학 기반 영역에 대한 특수 생성자도 제공합니다. 예를 들어, ECircleRegionECircle을 사용하여 생성자를 제공합니다.

영역 결합

기존 영역을 결합하여 새 영역을 만들려면 다음 작업을 사용합니다:

조합
메서드ERegion::Union(const ERegion&, const ERegion&)

2개의 원 조합

교차
메서드ERegion::Intersection(const ERegion&, const ERegion&)

2개의 원 교차

제거
메서드ERegion::Subtraction(const ERegion&, const ERegion&)

2개의 원 제거

지역에 대한 형태학적 작업

다양한 형태 적 연산을 설명하는 데 사용되는 초기 임의 영역

Grow(확장)
메서드ERegion::Grow(int radius) 영역을 반환합니다.

임의 영역의 확장

Shrink(축소)
메서드ERegion::Shrink(int radius)역을 반환합니다.

임의 영역의 축소

윤곽선
메서드ERegion::Contour(int thickness, bool centered = true)

임의 영역의 윤곽선

영역을 자유롭게 그리기

클래스ERegionFreeHandPainter수동으로 영역을 만들 수 있는 메서드를 제공합니다.
C++ RegionFreeHand수 있는 샘플은 이 클래스를 사용하여 이미지에 영역을 그리는 방법을 보여줍니다.

영역 사용

영역을 지원하는 도구는 다음 규칙 중 하나를 따르는 메소드를 제공합니다:

Method(const EImage& source, const ERegion& region)
Method(const EImage& source, const ERegion& region, EImage& destination)

소스, 지역 및 대상은 호환 가능해야 합니다. 이는 해당 영역이 소스에 적어도 부분적으로 적합해야 하며 해당 소스와 대상의 크기가 동일해야함을 의미합니다.

영역 준비하기

Open eVision는 영역을 이미지에 적용할 때 자동으로 영역을 준비하지만 이 준비에는 시간이 걸릴 수 있습니다.
메서드에 대한 첫 번째 호출이 다음 호출보다 오래 걸리지 않으려면 적절한 메서드를 사용하여 미리 영역을 준비할 수 있습니다.Prepare()
영역을 수동으로 준비하려면 이미지에 내부 RLE 설명을 적용합니다.

영역 그리기

클래스ERegion시하는 여러 가지 메서드를 제공합니다:

ERegion::Draw() 반투명 방식으로 영역을 그립니다.
ERegion::DrawContour()을 그립니다.
ERegion::ToImage()마스크로 렌더링합니다.
전경색과 배경색을 구성할 수 있습니다.
너비와 높이로 이미지를 초기화했다면, Open eVision는 그 범위 내에서 영역을 렌더링합니다.
그렇지 않으면, Open eVision는 전체 영역을 포함하도록 이미지의 크기를 조정합니다.
를 사용ToImage()하여 이를 지원하Open eVisionToImage()ToImage() 함수의 마스크를 만듭니다.

ERegion 및 EROI

이전 EROIEROI Open eVisionEROI 새로운 영역과 호환됩니다.
일부 도구는 대신 인 소스 및/또는 대상이 있는 영역을 사용할 수 있도록 다음 규칙 중 하나를 따릅니다:ERoiERoi
Method(const ERoi& source, const ERegion& region)
Method(const ERoi& source, const ERegion& region, ERoi& destination)

이 경우 영역에 사용 된 좌표는 전체 이미지 공간 대신 축소된 ROI 공간에 상대적입니다.

ERegion 및 3D

새로운 영역은 Easy3D ( 및 )의 2.5D 표현과 호환됩니다.EDepthMapEDepthMap
이러한 클래스를 사용할 때 처리 도메인을 줄일 수도 있습니다.