# Error in Images (FFTW.dct)

**URL:** <https://discourse.julialang.org/t/error-in-images-fftw-dct/118344>\
**Category:** New to Julia\
**Created:** [August 18, 2024, 8:08pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344 "2024-08-18T20:08:32Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![AbdelazimHussien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abdelazimhussien/32/207723_2.png) [@AbdelazimHussien](https://discourse.julialang.org/u/AbdelazimHussien)\
**Post date:** [August 18, 2024, 8:08pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/1 "2024-08-18T20:08:32Z")

</div>

Hello  
I have the following code

```julia
using FFTW
using TestImages, ImageView, Random
using Plots

module Codec1
    function blockdct6(img::Matrix{Float32})
        y, x = size(img)
        outx = div(x, 8)
        outy = div(y, 8)
        
        bx = 1:8:outx*8
        by = 1:8:outy*8
        
        mask = zeros(8,8)
        mask[1:3,1:3] = [1 1 1; 1 1 0; 1 0 0]
        
        freqs = Array{Float32}(undef, outy*8, outx*8)
        for i in bx, j in by
            freqs[j:j+7,i:i+7] = dct(img[j:j+7,i:i+7])
            freqs[j:j+7,i:i+7] .*= mask
        end
        return freqs
    end

    function blockidct(freqs::Matrix{Float32})
        y, x = size(freqs)
        bx = 1:8:x
        by = 1:8:y
        
        pixels = Array{Float32}(undef, y, x)
        for i in bx, j in by
            pixels[j:j+7,i:i+7] = idct(freqs[j:j+7,i:i+7])
        end
        
        return pixels
    end

    function add_noise_to_frequencies(freqs::Matrix{Float32}, scale::Float32)
        noisy_freqs = freqs .+ scale * randn(size(freqs))
        return noisy_freqs
    end
end

```

In REPL i do the following

```julia
img = testimage("cameraman")  
img_float = Float32.(img)   
freqs = Codec.blockdct6(img_float)
noisy_freqs = Codec.add_noise_to_frequencies(freqs, 10.0)
img_noisy_float = Codec.blockidct(noisy_freqs)
img_noisy = Gray.(img_noisy_float)

plot(1:2, [Gray.(img_float), img_noisy], seriestype=:heatmap, title=["Original Image" "Noisy Image"], color=:grays)

```

when I run freqs = Codec.blockdct6(img\_float)  
I got the error  
UndefVarError: dct not defined  
Stacktrace:  
[1] blockdct6(img::Matrix{Float32})  
@ Main.Codec1 ~/Documents/Linkoping Research/PhD Courses/Current Programming Languages and Paradigms/Julia Lang /Day3\_2\_Easy.jl:26  
[2] top-level scope  
@ REPL[5]:1  
even if I use FFTW.dct  
Any solution?

---

<div class="post-metadata">

**Author:** ![fedoroff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fedoroff/32/53209_2.png) [@fedoroff](https://discourse.julialang.org/u/fedoroff)\
**Post date:** [August 18, 2024, 8:12pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/2 "2024-08-18T20:12:10Z")

</div>

Did you forget to add `using FFTW`?

---

<div class="post-metadata">

**Author:** ![AbdelazimHussien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abdelazimhussien/32/207723_2.png) [@AbdelazimHussien](https://discourse.julialang.org/u/AbdelazimHussien)\
**Post date:** [August 18, 2024, 8:21pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/3 "2024-08-18T20:21:42Z")

</div>

not working in both cases

---

<div class="post-metadata">

**Author:** ![AbdelazimHussien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abdelazimhussien/32/207723_2.png) [@AbdelazimHussien](https://discourse.julialang.org/u/AbdelazimHussien)\
**Post date:** [August 18, 2024, 8:22pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/4 "2024-08-18T20:22:40Z")

</div>

One more question I used 3 single quotes to start writre code  
how to exit from them and start to write plain text

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [August 18, 2024, 10:34pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/5 "2024-08-18T22:34:33Z")

</div>

The three backquotes should be on a line by themselves, either to start or to end the code block.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [August 18, 2024, 10:36pm UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/6 "2024-08-18T22:36:24Z")

</div>

> [@AbdelazimHussien](#):
>
> UndefVarError: dct not defined

Try `FFTW.dct`?

I’m on my phone right now so I can’t check this; I can’t remember whether `dct` is exported?

---

<div class="post-metadata">

**Author:** ![abraemer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraemer/32/51403_2.png) [@abraemer](https://discourse.julialang.org/u/abraemer)\
**Post date:** [August 19, 2024, 3:48am UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/7 "2024-08-19T03:48:58Z")

</div>

> [@AbdelazimHussien](#):
>
> ```julia
> using FFTW
> using TestImages, ImageView, Random
> using Plots
> 
> module Codec1
> function blockdct6(img::Matrix{Float32})
>  
> 
> ```

You need to put the appropriate `using` statements into the `module` as well.

---

<div class="post-metadata">

**Author:** ![AbdelazimHussien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abdelazimhussien/32/207723_2.png) [@AbdelazimHussien](https://discourse.julialang.org/u/AbdelazimHussien)\
**Post date:** [August 19, 2024, 8:01am UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/8 "2024-08-19T08:01:50Z")

</div>

not work. I don’t think it’s depricated. It runs on REPL well

---

<div class="post-metadata">

**Author:** ![AbdelazimHussien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abdelazimhussien/32/207723_2.png) [@AbdelazimHussien](https://discourse.julialang.org/u/AbdelazimHussien)\
**Post date:** [August 19, 2024, 8:02am UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/9 "2024-08-19T08:02:28Z")

</div>

What do U mean?  
Can U explain more?

---

<div class="post-metadata">

**Author:** ![abraemer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraemer/32/51403_2.png) [@abraemer](https://discourse.julialang.org/u/abraemer)\
**Post date:** [August 19, 2024, 9:14am UTC](https://discourse.julialang.org/t/error-in-images-fftw-dct/118344/10 "2024-08-19T09:14:16Z")

</div>

You use `dct` inside your `module` called `Codec1`. So you need to have the corresponding `using` statement also inside the `module`’s block:

```julia
using TestImages, ImageView, Random
using Plots
# using FFTW # don't think you need it here

module Codec1
    using FFTW # import it into this module because here you use the dct function
    
    function blockdct6(img::Matrix{Float32})
        # rest of code

```
