2012-05-04 3 views
0

저는 Matlab을 처음 사용하고 있으며, 그레이 스케일 이미지를 바이너리로 변환하려고합니다. 내장 된 함수 im2bwI(I,level)에는 검정색보다 낮은 밝기 값을 가진 모든 것을 모두 흰색으로 만들 모든 임계 값이 있습니다. 그러나 어떻게하면 특정 범위의 값만 검정색이 될 수 있습니까? 예를 들어, 강도 값 89 인 픽셀이 검정이 되도 록 70과 102 값이 흰색이되도록 어떻게 설정합니까?Matlab은 상한 및 하한 임계 값을 가진 이진으로 변환합니다.

답변

2

이 경우 논리 주소 지정을 사용할 수 있습니다. 0은 검은 색이고 255는 흰색이고 회색 음영 이미지는 ImageMatrix이라고 가정합니다. 흰색과 검은 색 값은 이미지의 색 농도 (6 비트, 8 비트 등)에 따라 달라집니다.

퍼센트 0 (검은 색)과 89의 모든 값을 대체합니다

여기에 코드입니다.

ImageMatrix(ImageMatrix == 89) = 0; 

% 모든 값을 70 또는 102로 255 (흰색)로 바꾸십시오. NewValue으로 MaxValueMinValue에서 값의 범위를 교체

ImageMatrix(ImageMatrix == 70 | Imagematrix == 102) = 255; 

:

MinValue = 192; 
MaxValue = 255; 
NewValue = 63; 

ImageMatrix(ImageMatrix >= MinValue & ImageMatrix <= MaxValue) = NewValue; 
0

않음 :

% 일부 예시적인 값을 설정 (값 192 ... (63) (255)을 대체) (내가 처리 할 이미지가되도록)

I(I == 89) = 0 
I(I == 70 | I == 102) = 255 

실제 MATLAB 테스트 (R2012a) :

K>> I = ceil(rand(12) * 34 + 69) 

I = 

    98 94 101 74 102 80 78 86 78 100 101 74 
    100 103 102 100 72 101 99 98 88 96 101 87 
    74 74 83 88 94 94 84 100 87 100 86 88 
    96 90 85 91 99 84 94 96 70 81 77 85 
    73 95 91 71 78 84 72 99 98 89 93 103 
    88 71 83 97 90 71 76 93 100 81 99 89 
    101 81 86 75 88 88 72 90 87 80 94 89 
    99 73 86 99 86 74 101 102 81 70 75 77 
    95 100 78 92 92 70 81 91 90 89 85 74 
    93 86 95 88 70 92 86 83 100 77 82 71 
    79 84 87 95 83 97 89 87 82 98 82 85 
    80 93 92 84 100 89 85 85 97 87 79 99 

K>> I == 89 

ans = 

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

K>> I == 70 

ans = 

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

K>> I == 102 

ans = 

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

K>> I(I == 89) = 0 

I = 

    98 94 101 74 102 80 78 86 78 100 101 74 
    100 103 102 100 72 101 99 98 88 96 101 87 
    74 74 83 88 94 94 84 100 87 100 86 88 
    96 90 85 91 99 84 94 96 70 81 77 85 
    73 95 91 71 78 84 72 99 98  0 93 103 
    88 71 83 97 90 71 76 93 100 81 99  0 
    101 81 86 75 88 88 72 90 87 80 94  0 
    99 73 86 99 86 74 101 102 81 70 75 77 
    95 100 78 92 92 70 81 91 90  0 85 74 
    93 86 95 88 70 92 86 83 100 77 82 71 
    79 84 87 95 83 97  0 87 82 98 82 85 
    80 93 92 84 100  0 85 85 97 87 79 99 

K>> I(I == 70 | I == 102) = 255 

I = 

    98 94 101 74 255 80 78 86 78 100 101 74 
    100 103 255 100 72 101 99 98 88 96 101 87 
    74 74 83 88 94 94 84 100 87 100 86 88 
    96 90 85 91 99 84 94 96 255 81 77 85 
    73 95 91 71 78 84 72 99 98  0 93 103 
    88 71 83 97 90 71 76 93 100 81 99  0 
    101 81 86 75 88 88 72 90 87 80 94  0 
    99 73 86 99 86 74 101 255 81 255 75 77 
    95 100 78 92 92 255 81 91 90  0 85 74 
    93 86 95 88 255 92 86 83 100 77 82 71 
    79 84 87 95 83 97  0 87 82 98 82 85 
    80 93 92 84 100  0 85 85 97 87 79 99 
관련 문제