Нечеткая C-означает кластеризацию в ImageSegmentation.jl
Я пытаюсь кластеризовать различные области изображения с помощью кластеризации Fuzzy C-средних с помощью ImageSegmentation.jl
using ImageSegmentation, Images
fl = load("flower.jpg")
fuzzy_fl = fuzzy_cmeans(fl,3,2)
Это дает ошибку как это:
MethodError: no method matching fuzzy_cmeans(::Base.ReshapedArray{Float64,2,ImageCore.ChannelView{Float64,3,Array{ColorTypes.RGB4{Float64},2}},Tuple{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64}}})
Closest candidates are:
fuzzy_cmeans(::Array{T<:Real,2}, ::Int64, ::Real; maxiter, tol, dist_metric, display) where T<:Real at /Users/asharma19/.julia/v0.6/Clustering/src/fuzzycmeans.jl:58
fuzzy_cmeans(::AbstractArray{T<:ColorTypes.Colorant,N}, ::Any...; kwargs...) where {T<:ColorTypes.Colorant, N} at /Users/asharma19/.julia/v0.6/ImageSegmentation/src/clustering.jl:12
1) Как мне ввести изображение для этой функции? 2) Кроме того, если он работает нормально, так как функция не возвращает массив SegmentedImage, как я должен отображать сегментированное / кластерное изображение после этого?
2 ответа
Код прекрасно работает для меня. Вы, вероятно, берете часть изображения, манипулирующую им (например, виды, транспонирование), прежде чем подавать его в fuzzy_cmeans
функция. Нечто иное, чем пример кода, который вы опубликовали.
Функция fuzzy_cmeans
не принимает Array{ColorTypes.RGB4{FixedPointNumbers.Normed{UInt8,8}},2}
,
Изображения должны быть Array{ColorTypes.RGB{FixedPointNumbers.Normed{UInt8,8}},2}
быть введенным в функцию.
Хотя это не должно происходить, так как тип параметра функции Colorant{T,N}
который является родителем AbstractRGB{T}
,
Изображения, как правило, RGB4 (с некоторыми отступами), поэтому вам нужно конвертировать их перед использованием. (можешь использовать convert
функция джулии)