## Description

This is a small project aiming at verifying some properties of natural image statistics

that we discussed in Chapter 2. You can use any programming languages.

Attached are four natural images (two from urban and two from countryside scenes).

What to hand in: Submit a report on the CCLE site. Your score will be based

on the quality of your results and the analysis (diagnostics of issues and comparisons) of

these results in your report.

Problem 1 (High kurtosis and scale invariance, 3 points). For computational considerations, first convert image to grey level and re-scale the intensity to [0,31] i.e. 32 grey levels.

Convolve the images with a gradient filter rxI, i.e. the intensity di↵erence between two

adjacent (horizontally or vertically). You can either pick any single image for the following

steps or accumulate the histograms (average) over the 4 images.

1. Plot the histogram H(z) for the di↵erence against the horizontal axis z 2 [31, +31].

Then do a log-plot log H(z). [Some bins will be zero, you can assign ✏ for such bins

in the log-plot].

2. Compute the mean, variance, and kurtosis for this histogram [Report the numeric

numbers in your report].

3. Fit this histogram to a Generalized Gaussian distribution e|z/|

and plot the fittedcurves super-imposed against the histogram. What is the value of in the fitted

generalized Gaussian?

4. Plot the Gaussian distribution using the mean and the variance above, and superimpose this plot with the plots in step (1) above (i.e. plot the Gaussian and its log

plot, this is easy to do in matlab).

5. Down-sample your image(s) by a 2 ⇥ 2 average (or simply sub-sample) the image.

Plot the histogram and log histogram, and impose with the plots in step 1, to

compare the di↵erence. Repeat this down-sampling process 2-3 times.

6. Synthesize a uniform noise image, i.e. each pixel is drawn independently from a

uniform number in [0, 31]. Repeat 1-2-4 to compare the di↵erence between a noise

image and a natural image. Do a 2 ⇥ 2 average instead of sub-sampling.

1

Stats 232A project 1: Statistics of Natural Images

Please also submit a zip file including your code, and make sure

your code is consistent with results in report.

Problem 2. (Verify the 1/f power law observation in natural images, 3 points).

Do an FFT (Fast Fourier Transform) on the grey image I which returns a Fourier

image ˆ(⇠, ⌘) which is complex number matrix indexed by (⇠, ⌘) for its horizontal and

vertical frequencies. Compute the amplitude (modulus) of each complex number A(⇠, ⌘).

Denote the frequency f = p⇠2 + ⌘2, and transfer to a polar coordinate, and we calculate

the total Fourier power A2(f) for each frequency (i.e. you need to discretize f, and

calculate the A2(f) averaged over the ring for each f, stop f when the circle hits the

boundary of the Fourier image).

1. Plot log A(f) against log f. This should be close to a straight line for each image.

Plot the curves for the 4 images in one figure for comparison.

2. Compute the integration (summation in discrete case) of S(f0) = R

⌦ A2(⇠, ⌘)d⇠d⌘

over the domain

⌦(f0) = {(⇠, ⌘) : f0

q

⇠2 + ⌘2 2f0}

Plot S(f0) over f0, the plot should fit to a horizontal line (with fluctuation) as S(f0)

is supposed to be a constant over f0.

Problem 3. (A 2D scale invariant world, 3 points). Suppose we simulate a toy 2D

world where the images consist of only 1D line segments. In an image, a line segment

is represented by its center (xi, yi), orientation ✓i and length ri. The line segments are

independently distributed with uniform probability for their centers and orientations. The

length follows a probability p(r) / 1/r3, i.e. a cubic power law. You may control the

density of line by a Poisson distribution. That is, in each unit area, the number of line

segments has a certain constant mean. [Hint: How to sample r from p(r)? Calculate the

Cumulative Distribution function of p(r), then draw a random number in [0,1].]

1. Simulate 1 image I1 of size 1024 ⇥ 1024 pixels with a total N lines. (You need to

record all the N lines whose centers are within a range of the image, truncate long

lines and hide (discard) lines shorter than a pixel.)

2. Simulate 2 new images I2 and I3 of size 512 ⇥ 512 and 256 ⇥ 256 pixels respectively.

I2 and I3 are down-sampled version of I1 and are generated by shortening the N

line segments in I1 by 50% and 25% respectively (discard lines shorter than 1).

3. Crop 2 image patches of size 128⇥128 pixels randomly from each of the three images

I1, I2, I3 respectively. Plot these six images [draw the line segments in black on white

background].

If you did it right [Please try !], the 6 images must look the same (i.e. you should not be

able to tell what scale the 6 images are cropped from). So this 2D world is scale-invariant.

2