이미지에서 눈부심과 밝기를 제거하는 방법 (이미지 전처리)?


19

이미지가 있습니다

여기에 이미지 설명을 입력하십시오

밝은 흰색 반점을 제거하는 방법이 있습니까? 감사합니다

편집하다:

가우스로 작업 한 다음 imagesc를 사용하여 표시 한 후 밝은 빨간색 반점을 명확하게 보여주는 다음 출력을 얻으십시오.

여기에 이미지 설명을 입력하십시오

레드 채널 :

여기에 이미지 설명을 입력하십시오

녹색 통로:

여기에 이미지 설명을 입력하십시오

블루 채널 :

여기에 이미지 설명을 입력하십시오

편집 2 :

Gabor 필터를 사용한 결함 감지

여기에 이미지 설명을 입력하십시오

히스토그램 :

여기에 이미지 설명을 입력하십시오

적절한 임계 값을 적응 적으로 계산하는 방법?


표시 등 설정이 알려져 있습니까?
nav

실제로는 필터링 등을 통해 스팟을 제거 할 수있는 방법이 없습니까?
vini

4
일반적으로 이것은 잘못된 문제입니다. 알려지지 않은 항목이 너무 많아서 휴리스틱 기반 솔루션을 사용해야합니다. 행운을 빕니다.
nav

답변:


19

이미지에서 눈부심 부분이 포화 영역이라고 가정합시다. 강도를 임계 값으로하여 감지 할 수 있습니다 (Mathematica의 코드) :

saturated = Binarize[ColorConvert[img, "Grayscale"], .9]

여기에 이미지 설명을 입력하십시오

그런 다음 채도 마스크 주위의 이미지 부분 만 교체하면됩니다 (모서리 기능을 통해 마스크가 확대됩니다 Dilation). Inpaint이 예제에서는 텍스처 합성을 사용한 인 페팅 ()을 사용 하여 결함 감지 알고리즘에 대한 입력으로 테스트 할 수 없지만이 예제에서는 제대로 작동하는 것 같습니다.

Inpaint[img, Dilation[saturated, DiskMatrix[20]]]

여기에 이미지 설명을 입력하십시오


matlab에 인 페인트 방법이 있습니까?
vini

미안, 나는 그것에 대한 답을 모른다.
Matthias Odisio

결함 탐지는 완벽하지만 MATLAB에 내장 된 기능이 없으므로
도장을

1
답변으로 문제가 해결되어 다행입니다. MATLAB에서의 도장에 관해서는 아마도 SO에 대한 독립적 인 질문에 적합 할 것입니다. 시작으로 stackoverflow.com/search?q=matlab+inpainting 을 참조하십시오 .
Matthias Odisio 2016 년

2
인 페인팅은 일반적으로 "푸 아송 이미지 블렌딩"자습서로 알려진 함께 할 수있는 여기 , MATLAB 코드와 예제 여기 .
Maurits

4

이것은 간단한 답변 일지 모르지만 임계 값을 지정할 수 있습니까? 예 :

img = imread('daRNS.png');
imflat = img; 
imflat(img>150) = 150; 
imagesc(imflat)

결과 :

평평한 이미지

임계 값을 적응 적으로 선택하는 것이 분명히 좋습니다. 예를 들어 이미지 히스토그램을 볼 수 있습니다.

hist(double(img(:)),0:255)

히스토그램

이를 바탕으로 적절한 임계 값을 선택하십시오.


pls는 내 편집 2 확인
vini

컷 - 오프 신호의 90 %가 설명에서 @vini 시도 모양
TDC

난 그냥 문턱 수 있지만 내 궁극적 인 목표는 결함 감지입니다 .. 그것은 문턱 경우 어떤 식 으로든 도움이되지 않습니다
vini

3
그러나 귀하의 질문은 "이미지에서 눈부심과 밝기를 제거하는 방법 (이미지 전처리)"입니다. 결함을 감지하는 방법이 아니라 또 다른 (더 어려운) 질문입니다. 아래의 @mrkulk는 아래의 질문에 대한 완전한 답변을 제공 한 것으로 보입니다.
tdc

그래, 내 질문은 지금 결함을 감지하는 방법이지만이 눈부심은 결과를 방해합니다
vini

2

여기에 이미지 설명을 입력하십시오조명 정보가 없으면 어렵습니다. 그러나 이미지에서 물체의 모양을 알면 흰색 눈부심 (가우시안)의 모양 템플릿을 설정하고 눈부심을 감지 할 수있는 슬라이딩 창을 만들 수 있습니다 (이후 인접 영역에서 색상 혼합). 지각 적으로 우리는 음영을 사용하여 이미지에서 3D 모양을 추론합니다. 음영의 모양이 표면 기울기를 줄 수 있다면 슬라이딩 창을 만들고 각 위치에서 섬광 템플릿을 확인할 수 있습니다.

캐니 가장자리 감지 후 :-

여기에 이미지 설명을 입력하십시오

기본적으로 이미지 # 1과 # 2 사이의 겹침 (최대 겹침 영역)이 결함이됩니다.


무엇을하려고하는지 설명-나는 과일에서 결함을 찾기 위해 질감 분할에 주로 사용되는 개버 필터를 적용하고 있지만 필터가 두 개의 흰색 반점을 표시하기 때문에 눈에 띄는 문제가 있습니다.
vini

RGB 또는 YUV에서 개별 채널을 가져 와서 작동하려고 했습니까?
mrkulk

가장 눈부신 이미지는 녹색 채널에있는 이미지입니다. 어떻게 조작하고 수정합니까?
vini

0.5의 임계 값으로 가장자리 이미지 (캐니)를 찍어 보았습니다. 예상대로 이미지에서 눈부심을 보지 못했습니다. 이것은 눈부심이없는 지역에 대해 강력한 우선 순위를 제공해야합니다.
mrkulk

눈부심없는 이미지를 만드는 데 어떻게 도움이됩니까?
vini

0

내 의견은 이것이 조명을 제어해야하고 이미지에서 눈부심이없는 픽셀 밝기의 최대 밝기에 대한 좋은 아이디어를 가져야하는 머신 비전 문제라는 것입니다. 결함 감지는 일반적으로 컴퓨터 비전 문제가 아닌 머신 비전 문제입니다.

우리가 조명의 결과로 보는 것은 빛의 반사 및 확산 반사 (일부 방출은 있지만 무시할 수있는)의 추가입니다.

거울 성분은이 사과처럼 반짝이는 표면에 눈부심입니다. 확산 반사보다 훨씬 큽니다 (> 10x).

즉, 확산 표면에서 조명, 게인 및 노출을 설정하면 포화 상태에 가까운 부분이 없는지 확인할 수 있습니다. "글레어를 포함하지 않는 픽셀"이 임계 값보다 높을 것이라는 충분한 데이터로 입증 된 경우 고정 임계 값을 사용하는 것이 실제로 선호되는 솔루션입니다. 본질적으로 픽셀의 분류가 사소한 상태가되도록 조명 조건과 카메라 매개 변수를 설정합니다.이 경우 주변의 픽셀에 대해보다 복잡한 기계 학습 기능보다는 단순한 임계 값으로 수행됩니다.

나는 "vini"의 접근 방식을 좋아하는데 RGB 평면을 실제로 보여줄 필요는 없다. 단순한 회색조 임계 값 만 실제로 작동합니다.

1-주변이 아닌 조명 조건을 설계합니다.

2- 분류 작업을 매우 사소하게 만듭니다 (임계 값).

3 기능 측정

4- 공차와 비교


0

랩 색상 공간으로 먼저 변환 한 다음 mapminmax를 변환 한 다음 첫 번째 광도 채널을 사용하십시오. 색상 문제가 줄어 듭니다. 그런 다음 상위 80 % 가장 밝은 픽셀에서 임계 값을 사용하십시오. 히스토그램에서 딥을 확인하고 테스트하십시오. 가장 좋은 임계 값은 딥의 하단에 있습니다. 이 지역에 지역 최소값이 없으면 이미지에 반사가 거의 없을 것입니다 ....... Martin

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.