Binarização Otsu com preservação de valor

8

Estou tentando implementar uma versão modificada do algoritmo de binarização otsu. Estou tentando binarizar imagens de documentos. Mas, no procedimento de binarização, desejo que o objeto (neste caso, o texto) retenha seu valor original em escala de cinza enquanto o plano de fundo assume o valor 255; isto é, branco. Estou postando uma versão de imagem de amostra que encontrei em um artigo.

Esta é a imagem original: insira a descrição da imagem aqui

Esta é a imagem resultante que eu quero obter: insira a descrição da imagem aqui

Alguém poderia me dizer como fazer isso no Matlab?

marca
fonte
Você quer reter a bolha cinza gigante?
Endolith 15/05/12
Eu quero manter os valores originais de todos os pixels cujo valor está acima do limite. Isso inclui o blob neste caso.
marque
Matlab código fonte para Otsu binarização com a preservação do valor ..

Respostas:

8

Eu não tenho o Matlab à mão, mas aqui está como você faz isso no OpenCV . O exemplo abaixo usa a interface python via Python (x, y) :

test = cv2.imread("test.jpg", 0)
(_, otsu) = cv2.threshold(test, 0.0, 255.0, cv2.THRESH_TOZERO_INV + cv2.THRESH_OTSU)
cv2.imshow('otsu', otsu)

Isso resulta em sua saída necessária: insira a descrição da imagem aqui

Edição: Eu não tenho uma cópia do Matlab, mas acho que é assim que você faria (supondo que você tenha a Image Processing Toolbox):

Use greythresh para obter o nível Otsu e defina qualquer coisa acima desse nível para branco (ou 255).

I = imread('doc.jpg');
I = rgb2gray(I);
otsuLevel = graythresh(I);
I(I > otsuLevel) = 255;

Espero que ajude!

mevatron
fonte
Eu preciso do código no Matlab. Eu sou um pouco novo para o software, por isso precisa de um pouco de ajuda com a codificação
marca de
@mark Veja minha edição para uma possível solução Matlab.
Mevatron 16/05
6

Você pode fazer isso facilmente com o Mathematica:

img = ColorNegate@ColorConvert[Import["../Desktop/sample.jpg"], "Grayscale"]
ColorNegate@ImageMultiply[Binarize[img], img]

O negócio de negação e multiplicação é garantir a preservação do valor original da escala de cinza. Você pode traduzir isso facilmente para qualquer idioma, eu acho.

Resultado filtrado

Emre
fonte