영상 처리 응용 편 - 쌀 계수 계속
배경 설명:
블 로그 글 을 보 세 요.
사실 찍 은 사진 은 쌀 알갱이 가 서로 접촉 하고 심지어 약간 겹 치 는 사진 이 더 많다.
쌀 의 과립 수 를 정확하게 계산 하 는 것 은 매우 어렵다. 영상 형태학 을 통 해 개폐 작업, 부식 등 손 을 통 해
세그먼트 시도 이후 효과 가 좋 지 않 습 니 다.결국 간단명료 하지만 미세한 오차 가 있 는 계 수 를 발견 하 였 다
방법카메라 사진:
알고리즘 사상:
주로 연결 구역 을 이용 하여 알고리즘 을 발견 하고 모든 연결 구역 을 발견 하 며 이분법 을 사용 하여 절단 이 비교적 작다.
부분의 연결 구역 집합 은 평균 연결 구역 면적 을 구하 고 이 평균 연결 구역 면적 에 따라
단일 쌀 크기 로 접착 부분의 쌀 알 갱 이 를 꺼 내 전체 쌀 을 완성 하 다.
수의 통계:
단점:
평균 연결 구역 면적 의 계산 은 두 가지 요소 에 제약 을 받 는데 하 나 는 최소 연결 구역 집합 에 대한 선택 알고리즘 이다.
두 견본 의 수량.알고리즘 결 과 는 실제 결과 와 일정한 오차 가 있 지만 오 차 는 1% 정도 입 니 다.
프로그램 알고리즘 코드 상세 설명
입력 한 그림 을 흑백 2 값 그림 으로 변환 하고 연결 영역 을 구 하 는 알고리즘 코드 는 다음 과 같 습 니 다.
src = super.filter(src, null);
getRGB(src, 0, 0, width,height, inPixels );
FastConnectedComponentLabelAlgfccAlg = new FastConnectedComponentLabelAlg();
fccAlg.setBgColor(0);
int[] outData = fccAlg.doLabel(inPixels, width, height);
평균 쌀 알갱이 연결 구역 을 가 져 오 는 코드 는 다음 과 같 습 니 다.
Integer[] values =labelMap.values().toArray(new Integer[0]);
Arrays.sort(values);
int minRiceNum = values.length/4;
float sum = 0;
for(int v= offset; voffset; v++) {
sum += values[v].intValue();
}
float minMeans = sum / (float)minRiceNum;
System.out.println(" minMeans = " + minMeans);
프로그램 순서 도 는 다음 과 같 습 니 다.
프로그램 실행 효 과 는 다음 과 같 습 니 다.
실제 쌀 의 과립 수 는 202 이 고, 정 답 률 은 99% 이다.
쌀 수 통 계 를 완성 한 소스 코드 는 다음 과 같다.
public class FindRiceFilter extends BinaryFilter {
private int sumRice;
private int offset = 10;
public int getSumRice() {
return this.sumRice;
}
public void setOffset(int pos) {
this.offset = pos;
}
@Override
public BufferedImage filter(BufferedImage src, BufferedImage dest) {
int width = src.getWidth();
int height = src.getHeight();
if ( dest == null )
dest = createCompatibleDestImage( src, null );
int[] inPixels = new int[width*height];
int[] outPixels = new int[width*height];
src = super.filter(src, null);
getRGB(src, 0, 0, width, height, inPixels );
FastConnectedComponentLabelAlg fccAlg = new FastConnectedComponentLabelAlg();
fccAlg.setBgColor(0);
int[] outData = fccAlg.doLabel(inPixels, width, height);
// labels statistic
HashMap labelMap = new HashMap();
for(int d=0; d
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.