2014-09-20 1 views
1

이미지 패키지를 사용하고 있으며 이미지를로드하고 이미지의 평균 및 표준 편차를 구합니다. Julia에서 이미지의 표준 편차를 구하는 방법

내가 시도 :

using Images, Color, FixedPointNumbers, ImageView, Testimages 
img = testimage("mandril") 
mean(data(img)) 

평균은 이미지의 평균 색상을 표시 IJulia에 사실, 잘했다. 그러나 이미지의 표준 편차를 얻으려고하면 다음과 같이 나타납니다.

std(data(img)) 

`varm` has no method matching  varm(::Image{RGB{UfixedBase{Uint8,8}},2,Array{RGB{UfixedBase{Uint8,8}},2}}, ::RGB{Float32}) 
while loading In[66], in expression starting on line 1 

in var at statistics.jl:162 

이미지의 표준 편차는 어떻게됩니까?

+0

제대로했는지 확인하려면 ImageMagick의'identify' 명령과 함께 명령 행에서 매우 쉽게 할 수 있습니다 :'identify -verbose yourImage.jpg' –

답변

2

당신은 이미지, 의 구성 요소를 추출하고 결과 행렬에 std과 표준 편차를 계산하는 red, greenblue를 사용할 수 있습니다.

using Images 
using TestImages 
using Color 
img = testimage("mandril") 
data(img) 

RGB(
    std(red(img)), 
    std(green(img)), 
    std(blue(img)) 
) 
# RGB{Float32}(0.22030124f0,0.18964756f0,0.24422659f0) 
separate, 와 또한 모든 데이터와 함께 3 차원 어레이를 만들 수

, 및 mapslices와 세 성분 대응하는 세 개의 2 차원 슬라이스 std을 적용한다.

vec(mapslices(std, separate(img), [1,2])) 

당신이 mean(data(img))이 및 std(data(img))하지 않습니다 (적어도 현재) 작동 원인을 파악하려면, 당신이 @less로, 해당 코드를 @which와 를 호출하는 방법을 확인하고 읽을 수 있습니다. 첫째, sqrt이 색상에 대해 정의되지 않으며, 둘째, std의 코드 중 일부는 평균이 Number 있다고 가정 :

@which mean(data(img)) 
# mean(A::AbstractArray{T,N}) at statistics.jl:17 

@which std(data(img)) 
# std(A::AbstractArray{T,N}) at statistics.jl:204 

@less mean(data(img)) 
@less std(data(img)) 

두 가지 문제 (적어도)이 있습니다.