형태소 연산 만 사용하여 이미지의 텍스트를 어떻게 재구성합니까?


16

다음 이미지의 텍스트를 최대한 재구성하고 싶습니다. 까다로운 부분은 이미지에 대해 형태 론적 조작 만 사용하고 싶다는 것입니다.

침식, 팽창, 개폐를 사용해 보았지만 결과는 그리 좋지 않습니다.

이것이 가능합니까?

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


팽창은 퍼지 가장자리를 매끄럽게 만드는 첫 번째 단계처럼 보입니다.
Paul R

예, 이것이 제가 시도한 모든 조합의 첫 단계라고 생각합니다.

2
문제를 더 정의해야한다고 생각합니다. 예를 들어 어떻게 더 읽기 쉽게 만들 수 있다면 약간의 확장만으로 충분할 것입니다. 왜곡 과정 전에 어떻게 보이는지 정확하게 재구성하려면 형태학 알고리즘에 사용되는 특정 글꼴의 모양을 알 수 없으므로 불가능합니다.
so12311

더 읽기 쉽게하기 위해 [0 1 0; 11; 0 1 0]. 텍스트를 원본과 매우 가깝게 만드는 것을 찾고 있습니다.
Jackobsen

답변:


6

형태 적으로 변환 된 이미지 등을 추가 / 빼기하려는 경우 각 픽셀 근처에 몇 개의 신호 픽셀이 있는지, 그 수에 따라 임계 값을 계산할 수 있습니다.

img = imread('http://i.stack.imgur.com/wicpc.png');

n = false(3);n(4) = 1;
s = false(3);s(6) = 1;
w = false(3);w(2) = 1;
e = false(3);e(8) = 1;

%# note that you could convolve with a cross instead
fourNeighbourCount = imerode(img,n) + imerode(img,s) + imerode(img,w) + imerode(img,3) + img;

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

%# require at least two neighbours
img = fourNeighbourCount > 1;

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

그런 다음 가운데에 구멍이있는 3x3 마스크로 얽히면 다음과 같은 것을 얻을 수 있습니다.

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


3

이것은 해결해야 할 매우 흥미로운 문제입니다! 중앙값 필터를 사용해보십시오 . 자세한 내용은 여기여기 를 참조하십시오.

문제를 시뮬레이트하기 위해 손을 넣지 않았지만 이것은 제안입니다. 내 직감은 그것이 소금-후추-유형의 소음을 막는 것으로 알려져 있기 때문에 큰 이점을 줄 수 있다고 말합니다. 귀하의 경우 이미지에는 테두리 주위에 여분의 흰색 점이있어 알파벳의 어느쪽에 따라 흰색 또는 검정색으로 변환됩니다. 중간 필터링 후의 모습은 다음과 같습니다.

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


1

어떤 이유로 당신이 형태소 연산을 사용하는 것으로 제한된다면, 지향적 닫기 연산의 "투표 방식"을 사용하는 것을 고려할 수 있습니다.

형태학 연산의 한 가지 문제점은 실제로 방향성을 고려하지 않는다는 것입니다. 중앙 픽셀의 경우 이와 같은 이웃

1 0 0
1 1 0
0 1 1

정말 이런 동네와 다르지 않습니다

0 1 0
1 1 0
1 1 0

팽창과 침식이 원하는 방향으로 편향되지 않기 때문에 문제가 발생할 수 있습니다. 따라서 당신이 할 수있는 한 가지는 커널을 사용하여 다음과 같은 가장 적합한 방향 편향 형태 연산을 찾는 것입니다

1 1 0   1 0 0   1 0 0
0 1 0   1 1 0   1 1 0
0 1 1   0 1 1   0 1 1 . . .

이것은 5 x 5 커널에서 더 나을 것이지만 아이디어는 분명하다고 생각합니다. 기본적으로 코너 감지 커널의 개념은 약간 씩 늘어나서 라인 세그먼트 감지 커널이됩니다. 이를 사용하여 가장 적합한 곡선을 찾을 수 있습니다.

0 0 0 1 1
0 0 1 1 0
0 1 1 0 0 
0 0 1 1 0
0 0 0 1 1

분명히 이것은 많은 수의 커널로 이어지지 만 기본 아이디어가 효과가 있다고 생각되면 가장 적합한 커널을 단일 패스에서 찾을 수 있도록 기술을 최적화하는 방법이 있습니다.

어쨌든 여러 커널과 일부 논리를 사용하는 경우 (x, y)에서의 각 작업에는 기존의 형태 학적 단계보다 더 많은 계산이 필요합니다.

  1. 각 픽셀 (x, y)에서 여러 형태소 연산자를 적용하십시오. 각 연산자에 대해 형태 학적 연산 결과와 입력이 커널과 일치하는 정도를 모두 계산하십시오. ( "도"= 일치하는 픽셀 수)
  2. 실제 켜기 / 끄기 픽셀 구성과 가장 일치하는 커널의 형태 학적 결과를 선택하십시오.

커널 크기는 입력 크기와 일치해야합니다. 더 큰 커널을 사용하는 대신 "확산"커널을 사용하여 작업 수를 줄일 수 있습니다. 다음 커널은 반경이 1보다 큰 3 x 3 커널입니다.

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