2014-12-05 2 views
0
내가 원하는 무엇
clear 
I = imread('punk.jpg'); 
figure; imshow(I); 
B=blockproc(I, [4 4], @(x) std2(x.data(:))); 
figure; 
imshow(B,[]); 
J = imresize(B, 4); 
figure; 
imshow(J,[]); 

BW = im2bw(J); 
figure; 
imshow(BW); 

Resultsmatlab에 이미지 블록 처리

, 그것은 바이너리하게 한 후, 이미지를 얻을 NXN 블록에서 휴식, 각각에 표준 편차를 적용하고 있습니다.

이미지에서 텍스트를 가져 오는 과정의 일부입니다. 지금까지 관심 분야를 파악하고 싶습니다.

3 번째 이미지가 왜 그렇습니까?

원본 이미지 :

enter image description here

+0

원래 이미지 만 게시하십시오 –

+0

@ Benoit_11 [image] (http://i.imgur.com/dunOxiA.jpg) – Rentonie

+0

@Rentonie 아니요, 질문을 업데이트하십시오. – kkuilla

답변

3

스케일링.

uint8 값 (0 - 255)이 포함 된 이미지를로드합니다. 그런 다음 blockproc을 통해 std2을 수행하십시오. 이 출력은 double 유형이지만 크기가 조정되지 않았으므로이 값의 크기가 원본과 비슷한 정도가됩니다.

입력없이 im2bw으로 전화하십시오. 이것은 임계 값 레벨을 0.5로 설정합니다. 이는 double 유형의 이미지가 0과 1 사이에서 스케일 된 것으로 가정하면 합당한 설정입니다 (많은 MATLAB 이미지 처리로 표준 가정 됨). 그러나 귀하의 경우, 대부분의 값이 0.5 이상이므로 분명히 대부분 흰색으로 표시됩니다.

두 가지 옵션 : 당신이 blockproc
2) 부여 im2bw 임계로를 통과 할 때

1) 이미지 배율을 조정 (예를 들어, im2double(I) 않습니다. graythresh을 사용하여 자동으로 계산할 수 있습니다. BW = im2bw(J,graythresh(J));

이 크기 조정 문제는 다른 이미지 처리 프로세스 및 이미지 저장에 영향을 미칩니다. double 형의 이미지인가, 아니면 double 형으로 처리 할 것인가? 처리하기 전에 0과 1 사이의 비율로 조정했는지 확인하거나 im2double으로 조정하십시오. 이렇게하면 저장 한 이미지가 비어있는 동안 질문을하기 위해 여기로 돌아 오는 것을 막을 수 있습니다.