私はMatlabが初めてで、グレースケール画像をバイナリに変換しようとしています。組み込み関数にim2bwI(I,level)
は、レベルよりも低い強度値を持つすべてを黒にし、すべてを白にするしきい値が 1 つしかありませんが、特定の範囲の値のみが黒くなるようにするにはどうすればよいですか? たとえば、強度値 89 のピクセルが黒になり、値 70 と 102 が白になるように設定するにはどうすればよいですか?
質問する
6266 次
2 に答える
2
これには、論理アドレス指定を使用できます。0 が黒、255 が白で、グレースケール画像がImageMatrix
. 白と黒の値は、画像の色深度 (6 ビット、8 ビットなど) に依存することに注意してください。
コードは次のとおりです。
% 89 のすべての値を 0 (黒) に置き換えます。
ImageMatrix(ImageMatrix == 89) = 0;
% 70 または 102 のすべての値を 255 (白) に置き換えます。
ImageMatrix(ImageMatrix == 70 | Imagematrix == 102) = 255;
MinValue
からまでの範囲の値を にMaxValue
置き換える場合NewValue
:
% 値の例をいくつか設定します (値 192 ... 255 を 63 に置き換えます):
MinValue = 192;
MaxValue = 255;
NewValue = 63;
ImageMatrix(ImageMatrix >= MinValue & ImageMatrix <= MaxValue) = NewValue;
于 2012-05-04T22:12:32.907 に答える
0
答え: (I を処理対象の画像とします)
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
于 2013-03-28T23:01:43.680 に答える