Можете ли вы привести пример вашего ввода и спецификации желаемого результата?В общем, если x
- это матрица Float64
, содержащая ваше изображение в оттенках серого, то Float64.(x .> 0.5)
даст вам то, что вы хотите.Например:
julia> img = rand(5,4)
5×4 Array{Float64,2}:
0.294821 0.719161 0.36838 0.0962881
0.262626 0.0169155 0.7068 0.668797
0.450861 0.493318 0.0125666 0.783241
0.267667 0.652534 0.0860362 0.811446
0.586622 0.08407 0.316635 0.36396
julia> Float64.(img .> 0.5)
5×4 Array{Float64,2}:
0.0 1.0 0.0 0.0
0.0 0.0 1.0 1.0
0.0 0.0 0.0 1.0
0.0 1.0 0.0 1.0
1.0 0.0 0.0 0.0
Если вы хотите явно указать целевые значения (код выше использует тот факт, что true
преобразуется в 1.0
и false
в 0.0
), вы можете написать:
julia> ifelse.(img .> 0.5, 1.0, 0.0)
5×4 Array{Float64,2}:
0.0 1.0 0.0 0.0
0.0 0.0 1.0 1.0
0.0 0.0 0.0 1.0
0.0 1.0 0.0 1.0
1.0 0.0 0.0 0.0
Вы также можете достичь этого результата, используя следующие выражения:
julia> Float64[v > 0.5 for v in img]
5×4 Array{Float64,2}:
0.0 1.0 0.0 0.0
0.0 0.0 1.0 1.0
0.0 0.0 0.0 1.0
0.0 1.0 0.0 1.0
1.0 0.0 0.0 0.0
julia> [ifelse(v > 0.5, 1.0, 0.0) for v in img]
5×4 Array{Float64,2}:
0.0 1.0 0.0 0.0
0.0 0.0 1.0 1.0
0.0 0.0 0.0 1.0
0.0 1.0 0.0 1.0
1.0 0.0 0.0 0.0