2009-08-12 7 views
5

몇개의 JPG 이미지가 있습니다. 그들 중 일부는 일 수 있습니다 검은 색 테두리가 하나 이상의 측면에 있고, 나는 그들을 제거하고 싶습니다. 검은 색 테두리는 실제 이미지 주위를 돌아 다니지 않을 수 있습니다. 일부는 맨 아래에 테두리가 있고 (실제 이미지가 맨 위에 있음), 일부는 가운데에 맞춰질 수 있지만 (두면의 검은 색 테두리를 의미하지만 연결되지는 않음) 더욱이 이미지는 JPG 압축이므로 더 이상 정확히 0,0,0 검정이 아닐 수도 있습니다.이미지 주위에 검정 테두리 제거

페인트 프로그램에서 "간단하게"낮은 허용 오차로 Magic Wand 도구를 사용하지만 ASP.net에서 C#으로 수행해야합니다.이 작업을 수행하는 가장 좋은 방법은 무엇인지 모르겠습니다. 입니다.

검은 영역을 찾기 위해 각 줄을 스캔 한 다음 각 열 (두 개의 중첩 된 for-loops)을 스캔해야합니까? 다소 어리석은 소리, 성능 및 CPU로드 방식. 또는 GDI +에 이미 일부 마법봉 도구가 포함되어 있습니까?

이미지 크기가 크지 않고 (최대 474x474 픽셀) 이후에 캐시되지만 서버로드를 가능한 한 낮게 유지해야합니다.

아무리 바보 같은 방법이라면 어떨까요?

답변

4

그것은 당신이 이런 식으로 뭔가 할 수있는 각각의 에지처럼 보인다 :

for each edge: 
    for (i = 0; ; i++) { 
     compute average pixel value along edge row/column + i 
     if (average value > threshold) 
       break; 
    } 
    crop image 
+0

그 접근 방식이 비트 무차별 대입 (두가 - 루프) 보인다, 그러나 그것은 (놀라 울 정도로 빠른 사진 당 1 밀리 초 미만). 평균 색상 값을 가진 아이디어에 감사드립니다. –

+1

이미지 프로세싱이있는 슬픈 진리는 적어도 저수준에서는 관심있는 모든 픽셀을 반복해야한다는 것입니다. 또한 사용자가 주로 검은 색 이미지를 업로드 할 수있는 경우이 방법을주의하십시오. 아마도 허용 된 테두리 크기의 상한선을 설정하십시오. – Eric

관련 문제