Android 는 OpenCV 를 기반 으로 Harris 각 점 검 사 를 실현 합 니 다.

무엇이 각 점 입 니까?
각 점 은 극치 점,즉 어떤 면 에서 속성 이 특히 두 드 러 진 점 이다.물론 각 점 의 속성 을 스스로 정의 할 수 있 습 니 다.각 점 은 두 선의 교차점 일 수도 있 고 인접 한 두 주요 방향 이 다른 사물 에 있 는 점 일 수도 있다.각 점 은 보통 두 변 의 교점 으로 정의 되 거나 각 점 의 국부 인접 도 메 인 은 두 개의 서로 다른 지역 의 서로 다른 방향의 경 계 를 가 져 야 한다.흔히 볼 수 있 는 각 점 은:
  • 그 레이스 케 일 경사도 의 최대 값 에 대응 하 는 픽 셀 점;
  • 두 직선 또는 곡선의 교점;
  • 1 계단 도의 도체 최대 치 와 경사도 방향 변화 율 이 가장 큰 픽 셀 점;
  • 1 단계 도체 가 가장 크 고 2 단계 도체 가 0 인 픽 셀 점(물체 가장자리 변화 가 연속 되 지 않 는 방향 을 가리킨다).
  • 각 점 을 왜 측정 합 니까?
    각 점 은 이미지 의 중요 한 특징 으로 이미지 도형 에 대한 이해 와 분석 에 중요 한 역할 을 한다.각 점 은 이미지 도형 의 중요 한 특징 을 유지 하 는 동시에 정보의 데이터 양 을 효과적으로 줄 이 고 정보의 함량 을 높 일 수 있 으 며 계산 속 도 를 효과적으로 향상 시 켜 이미지 의 신뢰성 있 는 일치 에 유리 하고 실시 간 처 리 를 가능 하 게 한다.각 점 은 3 차원 장면 재 구축,운동 평가,목표 추적,목표 식별,이미지 조준 과 일치 등 컴퓨터 시각 분야 에서 매우 중요 한 역할 을 한다.
    Harris 각 점 검 측
    사람의 눈 대각점 의 식별 은 보통 일부분 의 작은 구역 이나 작은 창 에서 이 루어 진다.이 특징 을 가 진 작은 창 을 각 방향 으로 이동 하면 창 내 구역 의 그 레이스 케 일 에 큰 변화 가 생 겼 다 면 창 안에서 각 점 을 만 났 다 고 생각 합 니 다.이 특정한 창 이 그림 의 각 방향 에서 이동 할 때 창 안의 그림 의 그 레이스 케 일 에 변화 가 없 으 면 창 안에 각 점 이 존재 하지 않 습 니 다.창 이 한 방향 으로 이동 할 때 창 안의 그림 의 그 레이스 케 일 에 큰 변화 가 생 겼 고 다른 방향 에서 변화 가 없 으 면 창 안의 그림 은 직선 적 인 라인 일 수 있 습 니 다.

    Harris 각 점 검 측 원 리 는 공식 연산 으로 다음 과 같다.

    그 중에서 w(x,y)는 미끄럼 창 가중치 함 수 를 나타 내 고 상수 일 수도 있 고 고 스 함수 일 수도 있다.E(u,v)는 미끄럼 창 이 각 방향 으로 이동 할 때 픽 셀 값 평가 계수 의 변 화 를 나타 낸다.


    여기,이곳λ1,λ2 는 행렬 M 의 2 가지 특징 값 이 고 k 는 지정 값 입 니 다.이것 은 경험 적 인 매개 변수 입 니 다.적당 한 크기 를 확인 하 는 실험 이 필요 합 니 다.보통 그 값 은 0.04 와 0.06 사이 에 있 고 그 존 재 는 함수 의 모양 을 조절 하 는 것 일 뿐 입 니 다.R 은 M 의 특징 값 에 달 려 있 습 니 다.각 점|R|이 크 고 평탄 한 구역|R|이 작 으 며 가장자리 의 R 은 마이너스 입 니 다.

    API
    
    public static void cornerHarris(Mat src, Mat dst, int blockSize, int ksize, double k, int borderType) 
    
  • 매개 변수 1:src,원본 그림 입력.단일 채널 8U 또는 32F 형식 이 어야 합 니 다.
  • 매개 변수 2:dst,출력 평가 계수 R 의 행렬.사 이 즈 는 src 와 같 고 유형 은 단일 채널 32F 입 니 다.
  • 매개 변수 3:blockSize,인접 지역 크기.
  • 매개 변수 4:ksize,Sobel 연산 자의 반지름.
  • 매개 변수 5:k,Harris 평가 계수 R 을 계산 하 는 가중치 시스템.
  • 매개 변수 6:border Type,픽 셀 외 추산 법 표지 위치.
  • 방법의 출력 dst 는 평가 계수 R 의 행렬 로 평가 계수 가 플러스 마이너스 가 있 고 범위 가 넓 기 때문에 계산 이 끝 난 후에 정규 화 처 리 를 해 야 한다.그리고 경험 치 한도 값 을 통 해 픽 셀 점 이 Harris 각 점 인지 아 닌 지 를 비교 판단 한다.한도 값 이 클 수록 추출 한 해 리 스 각 점 이 적 고 한도 값 이 작 을 수록 추출 한 해 리 스 각 점 이 많다.
    조작 하 다.
    
    /**
     * Harris    
     * author: yidong
     * 2020/12/30
     */
    class HarrisActivity : AppCompatActivity() {
        private val mBinding: ActivityHarrisBinding by lazy {
            ActivityHarrisBinding.inflate(layoutInflater)
        }
    
        private val gray by lazy {
            this.getBgrFromResId(R.drawable.lena).toGray()
        }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(mBinding.root)
    
            mBinding.ivLena.showMat(gray)
            wrapCoroutine({ showLoading() }, { doCornerHarris() }, { hideLoading() })
        }
    
        private fun doCornerHarris() {
            val dst = Mat()
            val dstNorm = Mat()
            val dstNormal8U = Mat()
            Imgproc.cornerHarris(gray, dst, 2, 3, 0.04)
            Core.normalize(dst, dstNorm, 0.0, 255.0, Core.NORM_MINMAX)
            Core.convertScaleAbs(dstNorm, dstNormal8U)
            Imgproc.threshold(dstNormal8U, dstNormal8U, 120.0, 255.0, Imgproc.THRESH_BINARY)
            GlobalScope.launch(Dispatchers.Main) {
                mBinding.ivResult.showMat(dstNormal8U)
            }
        }
    
        private fun showLoading() {
            mBinding.isLoading = true
        }
    
        private fun hideLoading() {
            mBinding.isLoading = false
        }
        
        override fun onDestroy() {
            super.onDestroy()
            gray.release()
        }
    }
    
    효과.
    다음 그림 에서 백 점 은 평가 계수 가 120 보다 큰 각 점 검 측 결과 이다.코드 중의 매개 변 수 는 스스로 테스트 를 조정 할 수 있다.

    소스 코드
    github.com/onlyloveyd/…
    이상 은 안 드 로 이 드 가 OpenCV 를 바탕 으로 Harris 각 점 검 사 를 실현 하 는 상세 한 내용 입 니 다.안 드 로 이 드 OpenCV 가 Harris 각 점 검 사 를 실현 하 는 데 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

    좋은 웹페이지 즐겨찾기