카메라로 숫자를 찍으면 숫자 인식하는 모듈을 만들려고 합니다.
그래서 이미지를 찍고 이진화를 하는데 분명 코드에서는 r, g, b의 threshold 이상이면 백색, 이외에는 흑색으로 지정을 하는데
막상 이미지를 보면 잡상으로 볼수 있는 색들이 굉장히 많이 보입니다
잡상 색깔은 RGB로 (227,227, 227) (224, 224, 224) (15, 15, 15) 등 색상은 굉장히 다양합니다
원본 이미지에서는 잡상이 낄수 있어도 그 이미지 배열을 탐색하면서 전부 흑과 백으로 색상을 세팅했음에도 불구하고 잡상이 있는것이 궁금합니다.
또한 그 잡상때문에 침식과 팽창(열림, Opening)기법을 3x3 마스크를 이용해서 사용했음에도 잡상 자체는 그대로 존재 합니다.
질문을 요약하자면,
이진화를 했음에도 잡상이 존재합니다.
분명히 제가 코딩을 잘못했을거라 생각합니다.
이진화 메소드를 봐주시고 피드백 해주시면 감사하겠습니다.
for (int i = 0; i < data.length; i++)
{
if (i / Bit.getWidth() >= Bit.getHeight()) break;
int pixel = Bit.getPixel(i % Bit.getWidth(), i / Bit.getWidth());
int a = Color.alpha(pixel);
int r = Color.red(pixel);
int g = Color.green(pixel);
int b = Color.blue(pixel);
int white, black;
white = 125; //150
black = 125; //105
try {
if (r > white && g > white && b > white) {
Bit.setPixel(i % Bit.getWidth(), i / Bit.getWidth(), Color.WHITE);
} else if (!(r > black && g > black && b > black)) {
Bit.setPixel(i % Bit.getWidth(), i / Bit.getWidth(), Color.BLACK);
} else {
Bit.setPixel(i % Bit.getWidth(), i / Bit.getWidth(), Color.GRAY);
}
} catch(Exception e) {
e.printStackTrace();
}
}