Android 는 OpenCV 를 기반 으로 Harris 각 점 검 사 를 실현 합 니 다.
4859 단어 AndroidOpenCVHarris 각 점 검 측
각 점 은 극치 점,즉 어떤 면 에서 속성 이 특히 두 드 러 진 점 이다.물론 각 점 의 속성 을 스스로 정의 할 수 있 습 니 다.각 점 은 두 선의 교차점 일 수도 있 고 인접 한 두 주요 방향 이 다른 사물 에 있 는 점 일 수도 있다.각 점 은 보통 두 변 의 교점 으로 정의 되 거나 각 점 의 국부 인접 도 메 인 은 두 개의 서로 다른 지역 의 서로 다른 방향의 경 계 를 가 져 야 한다.흔히 볼 수 있 는 각 점 은:
각 점 은 이미지 의 중요 한 특징 으로 이미지 도형 에 대한 이해 와 분석 에 중요 한 역할 을 한다.각 점 은 이미지 도형 의 중요 한 특징 을 유지 하 는 동시에 정보의 데이터 양 을 효과적으로 줄 이 고 정보의 함량 을 높 일 수 있 으 며 계산 속 도 를 효과적으로 향상 시 켜 이미지 의 신뢰성 있 는 일치 에 유리 하고 실시 간 처 리 를 가능 하 게 한다.각 점 은 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)
조작 하 다.
/**
* 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 각 점 검 사 를 실현 하 는 데 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.