---
# System prepended metadata

title: DIP Lab 1
tags: [DIP]

---

---
title: DIP Lab 1
tags: DIP
---
# DIP Lab 1
105042015 沈冠妤 外語20

### 1. Proj02-02 - Reducing the Number of Intensity Levels in an Image (30%)

* **Explanation:**

    Divide number 1~255 into given number of divisions, such as 2<sup>7</sup>, 2<sup>6</sup>, ..., 2<sup>0</sup>, to get the range of each division.
<img src="https://i.imgur.com/mQFbJFV.png" height="125" width="400"/>


    Let original intensity divided by range of a division. Pick the nearest floor integer to determine the scaled-down value.
<img src="https://i.imgur.com/zlIHZQH.png" height="125" width="400"/>

    Map the scaled-down value to 1~255 to get the new value.
<img src="https://i.imgur.com/CXpXmbo.png" height="125" width="400"/>


* **Result:**
<img src="https://i.imgur.com/1gFSrmO.png" height="80%" width="80%"/>


* **Comparison:**

    Images with higher quantization results in a more authetic and blur image, while images with lower quantization appears more sharp and distinct.


---

### 2. Proj02-03 – Zooming and Shrinking Images by Pixel Replication (30%)

* **Explanation:**

    To shrink image with nearest-neighbor algorithm, each **point(i, j)** of output image maps to **point((i-1)\*fac+1, (j-1)\*fac+1)** of input image.
    
    * new_img(1,1) >> orig_img(1,1)
    * new_img(1,2) >> orig_img(1,11)
    * ...
    * new_img(2,2) >> orig_img(11,11)
     

    <img src="https://i.imgur.com/5trPJWd.png" height="200" width="400"/>
    
    To zoom image, for each p(i,j) of output image, divide its coordinates by fac and round to the nearest integer, then plus 1 for matlab's indexing rule.
    
    If exceeds boundary, given the closest boundary's value.
    
    <img src="https://i.imgur.com/BoIGLkV.png" height="200" width="400"/>

* **Result:**
<img src="https://i.imgur.com/irx6d3q.png" height="80%" width="80%"/>


* **Comparison:**

    Image after shrinking and zooming appears more sharp and distinct. Some data are lost during shrinking, and nearest-neighbor method merely repeats the existing values, so no new values are created during the zooming process.


---

### 3. Proj02-04 – Zooming and Shrinking Images by Bilinear Interpolation (40%)

* **Explanation:**

    <img src="https://i.imgur.com/hGciWmP.png" height="400" width="400"/>
    
    P is the desired point to interpolate.

    To implement bilinear interpolation, first find the ratio between input size and output size for both x and y dimension.
    
    For each pixel on the output image, determine the 4 corresponding points on the input image by multiplying the ratio we retrieved before. Mind the fix() and ceil()  for each point, and plus 1 for matlab's indexing rule.

    Map P on input image by multiplying the ratios. Get x_weight by subtracting P's x coordinate with a's coordinate. Add abs() to work both for shrinking and zooming. Same for calculating y_weight.

    To determine value of r<sub>1</sub>, let a*(1-x_weight) + b*x_weight.

    To determine value of r<sub>2</sub>, let c*(1-x_weight) + d*x_weight.

    To determine value of P, let r1*(1-y_weight) + r2*y_weight.

* **Result:**
<img src="https://i.imgur.com/6X9iefB.png" height="80%" width="80%"/>

* **Comparison:**

    Image after shrinking and bilinear interpolation zooming appears more blur than the original image. Comparing to replication method, result of bilinear interpolation seems more natural, less sharp.