그림 판단. - 비트 맵 이 흑백 인지 아 닌 지 판단 하 는 방법.
알고리즘 이치:
픽 셀 마다 RGB 값 을 통 해 진행 판단 합 니 다.비트 맵 은 픽 셀 점 으로 이 루어 져 있 고 픽 셀 점 마다 RBG 값 이 있 기 때문에 RGB 값 을 통 해 그림 이 컬러 인지 아 닌 지 를 판단 할 수 있다 는 것 을 잘 알 고 있 습 니 다.
[RGB]: R 은 빨간색 을 대표 하고 G 는 녹색 을 대표 하 며 B 는 파란색 을 대표 하 며 삼원 색 의 이 치 를 통 해 풍부 하고 다채로운 색 의 얼굴 을 형성한다.
시작 생각:
1. 순수한 컬러 사진 은 픽 셀 점 의 색상 이 검은색 인지 흰색 인지 판단 만 하면 되 고 비 컬러 색상 에 닿 으 면 장단 컬러 사진 이 라 고 생각 할 수 있 습 니 다.
2. 회색 계 컬러 그림 은 회색 계 가 있 기 때문에 화소 점 이 컬러 인지 아 닌 지 를 통 해 판단 할 수 있 지만 회색 계 화소 점 의 RGB 는 특색 이 있 습 니 다. 【 R = G = B 】
알고리즘 최적화:
1. 순수한 컬러, 흰색 과 검은색 두 가지 색 만 있 고 흰색 RGB [R = G = B = 255], 색 이 검은색 [R = G = B = 0];
2. 회색 계단, RGB 【 R = G = B 】;
색 이 든 회색 이 든 모두 RGB 중 [R = G = B] 임 을 알 수 있 습 니 다.
문제 가 발생 했 습 니 다:
어떤 것 은 컬러 사진 이 라 고 생각 할 수 있 고 녹색 이나 빨간색 이 있 는 상황 이 존재 하 므 로 [R = G = B] 법 으로 판단 할 수 없다.
생각
이 사진 들 [R < > B < > G] 은 대체적으로 회색 얼굴 에 가 깝 기 때문에 R, G, B 의 차이 가 크 지 않 을 것 입 니 다. 제 테스트 를 통 해 이 [편 색 된 컬러 사진] 사진 에 화소 점 이 있 는 R, G, B 의 차 이 는 절대 최대 50 (R - G, R - B, G - B) 을 초과 하지 않 고 컬러 사진 에 있 는 R, B 를 발 명 했 습 니 다.G 차 이 는 절대 치, 최대 치 는 50 을 넘 는 픽 셀 이 존재 합 니 다.
간단히 말하자면:
1. [사용자 정의] 색 편향 값 Diff = Max (| R - G |, | R - B |, | G - B |);
2. 컬러 이미지 중 가장 큰 Diff < 50;
[P. S: 이 알고리즘 은 오차 가 있 을 수 있 습 니 다. 엄격 한 의미 에서 R = G = B, Diff = 0 이 어야 합 니 다.]
상세 한 현실:
///
///
///
///
///
public bool isBlackWhite(string filename)
{
Color c = new Color();
using (Bitmap bmp = new Bitmap(filename))
{
//
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
c = bmp.GetPixel(x, y);
// Diff
if (GetRGBDiff(c.R, c.G, c.B) > 50)
{
return false;
}
}
}
return true;
}
}
public int GetRGBDiff(int r,int g,int b)
{
// , , r-g,r-b,g-b 。
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.