gpt4 book ai didi

image-processing - 如何在 Julia 中将一些计算值(浮点)转换为 RGB 类型?

转载 作者:行者123 更新时间:2023-12-04 03:56:34 25 4
gpt4 key购买 nike

我正在尝试使用 3x3 kernel_test 进行图像卷积,并且遇到了返回正确类型的挑战,以便我可以查看图像(在卷积之后)。我的代码如下。

begin
function update_mat_val(org_clr::AbstractRGB, new_clr::AbstractRGB, n::Number)
r = reinterpret(N0f8, (red(org_clr) + (red(new_clr) * n)))
g = reinterpret(N0f8, (green(org_clr) + (green(new_clr) * n)))
b = reinterpret(N0f8, (blue(org_clr) + (blue(new_clr) * n)))

return RGB(r, g, b)
end
end
function convolve_image(M::AbstractMatrix, K::AbstractMatrix)
#M is the matrix, K is the kernel

(m_height, m_width) = size(M)
(k_height, k_width) = size(K)

conv_mk = zeros(typeof(M[1,1]), m_height+k_height-1, m_width+k_width-1)
(conv_height, conv_width) = size(conv_mk)

for i in 1:m_height, j in 1:m_width
for p in 1:k_height, q in 1:k_width
conv_mk[i+p-1,j+q-1] = update_mat_val(conv_mk[i+p-1,j+q-1], M[i,j], K[p,q])
end
end

return conv_mk
end
convolve_image(image, kernel_test)
最初,我没有使用重新解释方法,并且这些值超出了 RGB 可以容纳的 0-255 值。所以在网上阅读了一些之后,我尝试使用重新解释。我尝试重新解释之前和之后的错误按以下相应顺序给出。如何正确处理这些值,以便获得图像?
ArgumentError: element type FixedPointNumbers.Normed{UInt8,8} is an 8-bit type representing 256 values from 0.0 to 1.0,

but the values (0.9254901960784314, 0.9686274509803922, 1.0019607843137255) do not lie within this range.

See the READMEs for FixedPointNumbers and ColorTypes for more information.

throw_colorerror_(::Type{FixedPointNumbers.Normed{UInt8,8}}, ::Tuple{Float64,Float64,Float64})@types.jl:686
throw_colorerror(::Type{ColorTypes.RGB{FixedPointNumbers.Normed{UInt8,8}}}, ::Tuple{Float64,Float64,Float64})@types.jl:736
checkval@types.jl:654[inlined]
RGB@types.jl:101[inlined]
_convert@conversions.jl:87[inlined]
cconvert@conversions.jl:76[inlined]
convert@conversions.jl:73[inlined]
setindex!@array.jl:849[inlined]
convolve_image(::Array{ColorTypes.RGB{FixedPointNumbers.Normed{UInt8,8}},2}, ::Array{Float64,2})@Other: 12
top-level scope@Local: 1
bitcast: target type not a leaf primitive type

reinterpret@essentials.jl:414[inlined]
update_mat_val@Other: 3[inlined]
convolve_image(::Array{ColorTypes.RGB{FixedPointNumbers.Normed{UInt8,8}},2}, ::Array{Float64,2})@Other: 12
top-level scope@Local: 1

最佳答案

您可以像这样编写更新函数

update_mat_val(val1::AbstractRGB, val2::AbstractRGB, n::Number) = val1 + val2 * n
无需到处进行所有转换。

关于image-processing - 如何在 Julia 中将一些计算值(浮点)转换为 RGB 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63784109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com