julia-lang-将图像转换为黑白

时间:2018-10-26 00:52:57

标签: image-processing julia

我正在尝试使用阈值为0.5的Julia将图像转换为黑白图像。我已经将图像转换为灰度,但是不确定是否有帮助。我是Julia的新手,所以我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

能否请您提供输入示例和所需输出的规格? 通常,如果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的事实),可以这样写:< / p>

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

答案 1 :(得分:1)

尝试使用以下代码段:

using Images, ImageView;

function show_binary_image(img_path::String, threshold::Float16)
    img_binary = load(img_path);
    img_binary = (Gray.(img_binary) .> threshold);
    imshow(img_binary);
end

show_binary_image("/path/to/image/file", convert(Float16, 0.5));