diff --git a/hw1/.DS_Store b/hw1/.DS_Store index ac873d9..7ca3969 100644 Binary files a/hw1/.DS_Store and b/hw1/.DS_Store differ diff --git a/hw1/images/.DS_Store b/hw1/images/.DS_Store index a891a6d..0dda194 100644 Binary files a/hw1/images/.DS_Store and b/hw1/images/.DS_Store differ diff --git a/hw2/.DS_Store b/hw2/.DS_Store index e17ff8e..e16604d 100644 Binary files a/hw2/.DS_Store and b/hw2/.DS_Store differ diff --git a/hw2/images/.DS_Store b/hw2/images/.DS_Store index 41d78dd..f3ae115 100644 Binary files a/hw2/images/.DS_Store and b/hw2/images/.DS_Store differ diff --git a/hw3/.DS_Store b/hw3/.DS_Store index 81c5f40..a056202 100644 Binary files a/hw3/.DS_Store and b/hw3/.DS_Store differ diff --git a/hw4/.DS_Store b/hw4/.DS_Store index cb714bc..03c1142 100644 Binary files a/hw4/.DS_Store and b/hw4/.DS_Store differ diff --git a/proj2/.DS_Store b/proj2/.DS_Store new file mode 100644 index 0000000..2683a23 Binary files /dev/null and b/proj2/.DS_Store differ diff --git a/proj2/images/.DS_Store b/proj2/images/.DS_Store new file mode 100644 index 0000000..d874d96 Binary files /dev/null and b/proj2/images/.DS_Store differ diff --git a/proj2/images/1-1-0.png b/proj2/images/1-1-0.png new file mode 100644 index 0000000..8bcd581 Binary files /dev/null and b/proj2/images/1-1-0.png differ diff --git a/proj2/images/1-1-1.png b/proj2/images/1-1-1.png new file mode 100644 index 0000000..d54a07d Binary files /dev/null and b/proj2/images/1-1-1.png differ diff --git a/proj2/images/1-1-2.png b/proj2/images/1-1-2.png new file mode 100644 index 0000000..031fd8f Binary files /dev/null and b/proj2/images/1-1-2.png differ diff --git a/proj2/images/1-1-3.png b/proj2/images/1-1-3.png new file mode 100644 index 0000000..117f155 Binary files /dev/null and b/proj2/images/1-1-3.png differ diff --git a/proj2/images/1-1-4.png b/proj2/images/1-1-4.png new file mode 100644 index 0000000..2f27bfa Binary files /dev/null and b/proj2/images/1-1-4.png differ diff --git a/proj2/images/1-1-5.png b/proj2/images/1-1-5.png new file mode 100644 index 0000000..487f13f Binary files /dev/null and b/proj2/images/1-1-5.png differ diff --git a/proj2/images/1-2-1.png b/proj2/images/1-2-1.png new file mode 100644 index 0000000..432a5ce Binary files /dev/null and b/proj2/images/1-2-1.png differ diff --git a/proj2/images/1-2-10.png b/proj2/images/1-2-10.png new file mode 100644 index 0000000..eb6d6a1 Binary files /dev/null and b/proj2/images/1-2-10.png differ diff --git a/proj2/images/1-2-11.png b/proj2/images/1-2-11.png new file mode 100644 index 0000000..9b79be7 Binary files /dev/null and b/proj2/images/1-2-11.png differ diff --git a/proj2/images/1-2-12.png b/proj2/images/1-2-12.png new file mode 100644 index 0000000..09be2e6 Binary files /dev/null and b/proj2/images/1-2-12.png differ diff --git a/proj2/images/1-2-13.png b/proj2/images/1-2-13.png new file mode 100644 index 0000000..9b79be7 Binary files /dev/null and b/proj2/images/1-2-13.png differ diff --git a/proj2/images/1-2-14.png b/proj2/images/1-2-14.png new file mode 100644 index 0000000..09be2e6 Binary files /dev/null and b/proj2/images/1-2-14.png differ diff --git a/proj2/images/1-2-15.png b/proj2/images/1-2-15.png new file mode 100644 index 0000000..2bd3d9e Binary files /dev/null and b/proj2/images/1-2-15.png differ diff --git a/proj2/images/1-2-16.png b/proj2/images/1-2-16.png new file mode 100644 index 0000000..793d08b Binary files /dev/null and b/proj2/images/1-2-16.png differ diff --git a/proj2/images/1-2-17.png b/proj2/images/1-2-17.png new file mode 100644 index 0000000..1391b4b Binary files /dev/null and b/proj2/images/1-2-17.png differ diff --git a/proj2/images/1-2-18.png b/proj2/images/1-2-18.png new file mode 100644 index 0000000..00bfe48 Binary files /dev/null and b/proj2/images/1-2-18.png differ diff --git a/proj2/images/1-2-2.png b/proj2/images/1-2-2.png new file mode 100644 index 0000000..9187a6a Binary files /dev/null and b/proj2/images/1-2-2.png differ diff --git a/proj2/images/1-2-3.png b/proj2/images/1-2-3.png new file mode 100644 index 0000000..43ebf29 Binary files /dev/null and b/proj2/images/1-2-3.png differ diff --git a/proj2/images/1-2-4.png b/proj2/images/1-2-4.png new file mode 100644 index 0000000..607ff45 Binary files /dev/null and b/proj2/images/1-2-4.png differ diff --git a/proj2/images/1-2-5.png b/proj2/images/1-2-5.png new file mode 100644 index 0000000..5dd7460 Binary files /dev/null and b/proj2/images/1-2-5.png differ diff --git a/proj2/images/1-2-6.png b/proj2/images/1-2-6.png new file mode 100644 index 0000000..b44dd61 Binary files /dev/null and b/proj2/images/1-2-6.png differ diff --git a/proj2/images/1-2-7.png b/proj2/images/1-2-7.png new file mode 100644 index 0000000..bd9dc81 Binary files /dev/null and b/proj2/images/1-2-7.png differ diff --git a/proj2/images/1-2-8.png b/proj2/images/1-2-8.png new file mode 100644 index 0000000..ebc421c Binary files /dev/null and b/proj2/images/1-2-8.png differ diff --git a/proj2/images/1-2-9.png b/proj2/images/1-2-9.png new file mode 100644 index 0000000..a902717 Binary files /dev/null and b/proj2/images/1-2-9.png differ diff --git a/proj2/images/2-1-1.png b/proj2/images/2-1-1.png new file mode 100644 index 0000000..04ec7f8 Binary files /dev/null and b/proj2/images/2-1-1.png differ diff --git a/proj2/images/2-1-10.png b/proj2/images/2-1-10.png new file mode 100644 index 0000000..6c058b6 Binary files /dev/null and b/proj2/images/2-1-10.png differ diff --git a/proj2/images/2-1-11.png b/proj2/images/2-1-11.png new file mode 100644 index 0000000..80e10f6 Binary files /dev/null and b/proj2/images/2-1-11.png differ diff --git a/proj2/images/2-1-12.png b/proj2/images/2-1-12.png new file mode 100644 index 0000000..422093f Binary files /dev/null and b/proj2/images/2-1-12.png differ diff --git a/proj2/images/2-1-13.png b/proj2/images/2-1-13.png new file mode 100644 index 0000000..53abbc0 Binary files /dev/null and b/proj2/images/2-1-13.png differ diff --git a/proj2/images/2-1-14.png b/proj2/images/2-1-14.png new file mode 100644 index 0000000..9eb7d00 Binary files /dev/null and b/proj2/images/2-1-14.png differ diff --git a/proj2/images/2-1-15.png b/proj2/images/2-1-15.png new file mode 100644 index 0000000..8be9c95 Binary files /dev/null and b/proj2/images/2-1-15.png differ diff --git a/proj2/images/2-1-16.png b/proj2/images/2-1-16.png new file mode 100644 index 0000000..422093f Binary files /dev/null and b/proj2/images/2-1-16.png differ diff --git a/proj2/images/2-1-17.png b/proj2/images/2-1-17.png new file mode 100644 index 0000000..b8412a8 Binary files /dev/null and b/proj2/images/2-1-17.png differ diff --git a/proj2/images/2-1-2.png b/proj2/images/2-1-2.png new file mode 100644 index 0000000..bfc2983 Binary files /dev/null and b/proj2/images/2-1-2.png differ diff --git a/proj2/images/2-1-3.png b/proj2/images/2-1-3.png new file mode 100644 index 0000000..1976301 Binary files /dev/null and b/proj2/images/2-1-3.png differ diff --git a/proj2/images/2-1-4.png b/proj2/images/2-1-4.png new file mode 100644 index 0000000..c90e6e4 Binary files /dev/null and b/proj2/images/2-1-4.png differ diff --git a/proj2/images/2-1-5.png b/proj2/images/2-1-5.png new file mode 100644 index 0000000..00c4971 Binary files /dev/null and b/proj2/images/2-1-5.png differ diff --git a/proj2/images/2-1-6.png b/proj2/images/2-1-6.png new file mode 100644 index 0000000..5e04862 Binary files /dev/null and b/proj2/images/2-1-6.png differ diff --git a/proj2/images/2-1-7.png b/proj2/images/2-1-7.png new file mode 100644 index 0000000..fb77597 Binary files /dev/null and b/proj2/images/2-1-7.png differ diff --git a/proj2/images/2-1-8.png b/proj2/images/2-1-8.png new file mode 100644 index 0000000..e138efc Binary files /dev/null and b/proj2/images/2-1-8.png differ diff --git a/proj2/images/2-1-9.png b/proj2/images/2-1-9.png new file mode 100644 index 0000000..80e10f6 Binary files /dev/null and b/proj2/images/2-1-9.png differ diff --git a/proj2/images/2-2-1.png b/proj2/images/2-2-1.png new file mode 100644 index 0000000..7696513 Binary files /dev/null and b/proj2/images/2-2-1.png differ diff --git a/proj2/images/2-2-10.png b/proj2/images/2-2-10.png new file mode 100644 index 0000000..d99f938 Binary files /dev/null and b/proj2/images/2-2-10.png differ diff --git a/proj2/images/2-2-11.png b/proj2/images/2-2-11.png new file mode 100644 index 0000000..30bef1c Binary files /dev/null and b/proj2/images/2-2-11.png differ diff --git a/proj2/images/2-2-12.png b/proj2/images/2-2-12.png new file mode 100644 index 0000000..31018cf Binary files /dev/null and b/proj2/images/2-2-12.png differ diff --git a/proj2/images/2-2-13.png b/proj2/images/2-2-13.png new file mode 100644 index 0000000..0174c97 Binary files /dev/null and b/proj2/images/2-2-13.png differ diff --git a/proj2/images/2-2-14.png b/proj2/images/2-2-14.png new file mode 100644 index 0000000..67d2366 Binary files /dev/null and b/proj2/images/2-2-14.png differ diff --git a/proj2/images/2-2-15.png b/proj2/images/2-2-15.png new file mode 100644 index 0000000..8d66a41 Binary files /dev/null and b/proj2/images/2-2-15.png differ diff --git a/proj2/images/2-2-16.png b/proj2/images/2-2-16.png new file mode 100644 index 0000000..f7f05e7 Binary files /dev/null and b/proj2/images/2-2-16.png differ diff --git a/proj2/images/2-2-17.png b/proj2/images/2-2-17.png new file mode 100644 index 0000000..312d49d Binary files /dev/null and b/proj2/images/2-2-17.png differ diff --git a/proj2/images/2-2-18.png b/proj2/images/2-2-18.png new file mode 100644 index 0000000..f7f05e7 Binary files /dev/null and b/proj2/images/2-2-18.png differ diff --git a/proj2/images/2-2-19.png b/proj2/images/2-2-19.png new file mode 100644 index 0000000..4c61f54 Binary files /dev/null and b/proj2/images/2-2-19.png differ diff --git a/proj2/images/2-2-2.png b/proj2/images/2-2-2.png new file mode 100644 index 0000000..04c3e66 Binary files /dev/null and b/proj2/images/2-2-2.png differ diff --git a/proj2/images/2-2-20.png b/proj2/images/2-2-20.png new file mode 100644 index 0000000..406873d Binary files /dev/null and b/proj2/images/2-2-20.png differ diff --git a/proj2/images/2-2-21.png b/proj2/images/2-2-21.png new file mode 100644 index 0000000..9fd47cc Binary files /dev/null and b/proj2/images/2-2-21.png differ diff --git a/proj2/images/2-2-22.png b/proj2/images/2-2-22.png new file mode 100644 index 0000000..3591df5 Binary files /dev/null and b/proj2/images/2-2-22.png differ diff --git a/proj2/images/2-2-23.png b/proj2/images/2-2-23.png new file mode 100644 index 0000000..7e053c9 Binary files /dev/null and b/proj2/images/2-2-23.png differ diff --git a/proj2/images/2-2-24.png b/proj2/images/2-2-24.png new file mode 100644 index 0000000..77dac8a Binary files /dev/null and b/proj2/images/2-2-24.png differ diff --git a/proj2/images/2-2-3.png b/proj2/images/2-2-3.png new file mode 100644 index 0000000..6c72c54 Binary files /dev/null and b/proj2/images/2-2-3.png differ diff --git a/proj2/images/2-2-4.png b/proj2/images/2-2-4.png new file mode 100644 index 0000000..c7b0834 Binary files /dev/null and b/proj2/images/2-2-4.png differ diff --git a/proj2/images/2-2-5.png b/proj2/images/2-2-5.png new file mode 100644 index 0000000..9fc347f Binary files /dev/null and b/proj2/images/2-2-5.png differ diff --git a/proj2/images/2-2-6.png b/proj2/images/2-2-6.png new file mode 100644 index 0000000..c27f14e Binary files /dev/null and b/proj2/images/2-2-6.png differ diff --git a/proj2/images/2-2-7.png b/proj2/images/2-2-7.png new file mode 100644 index 0000000..d862a41 Binary files /dev/null and b/proj2/images/2-2-7.png differ diff --git a/proj2/images/2-2-8.png b/proj2/images/2-2-8.png new file mode 100644 index 0000000..ff718dd Binary files /dev/null and b/proj2/images/2-2-8.png differ diff --git a/proj2/images/2-2-9.png b/proj2/images/2-2-9.png new file mode 100644 index 0000000..19b6a04 Binary files /dev/null and b/proj2/images/2-2-9.png differ diff --git a/proj2/images/2-3-1-1.png b/proj2/images/2-3-1-1.png new file mode 100644 index 0000000..5f4a30b Binary files /dev/null and b/proj2/images/2-3-1-1.png differ diff --git a/proj2/images/2-3-1-2.png b/proj2/images/2-3-1-2.png new file mode 100644 index 0000000..62b5719 Binary files /dev/null and b/proj2/images/2-3-1-2.png differ diff --git a/proj2/images/2-3-1-3.png b/proj2/images/2-3-1-3.png new file mode 100644 index 0000000..e66ec08 Binary files /dev/null and b/proj2/images/2-3-1-3.png differ diff --git a/proj2/images/2-3-1-4.png b/proj2/images/2-3-1-4.png new file mode 100644 index 0000000..085a1e5 Binary files /dev/null and b/proj2/images/2-3-1-4.png differ diff --git a/proj2/images/2-3-1-5.png b/proj2/images/2-3-1-5.png new file mode 100644 index 0000000..12d0ca1 Binary files /dev/null and b/proj2/images/2-3-1-5.png differ diff --git a/proj2/images/2-3-1-6.png b/proj2/images/2-3-1-6.png new file mode 100644 index 0000000..ed5adec Binary files /dev/null and b/proj2/images/2-3-1-6.png differ diff --git a/proj2/images/2-3-2-1.png b/proj2/images/2-3-2-1.png new file mode 100644 index 0000000..df710a7 Binary files /dev/null and b/proj2/images/2-3-2-1.png differ diff --git a/proj2/images/2-3-2-2.png b/proj2/images/2-3-2-2.png new file mode 100644 index 0000000..4bf1d9b Binary files /dev/null and b/proj2/images/2-3-2-2.png differ diff --git a/proj2/images/2-3-2-3.png b/proj2/images/2-3-2-3.png new file mode 100644 index 0000000..3f516b9 Binary files /dev/null and b/proj2/images/2-3-2-3.png differ diff --git a/proj2/images/2-3-2-4.png b/proj2/images/2-3-2-4.png new file mode 100644 index 0000000..35b09ee Binary files /dev/null and b/proj2/images/2-3-2-4.png differ diff --git a/proj2/images/2-3-2-5.png b/proj2/images/2-3-2-5.png new file mode 100644 index 0000000..8cd4e11 Binary files /dev/null and b/proj2/images/2-3-2-5.png differ diff --git a/proj2/images/2-3-2-6.png b/proj2/images/2-3-2-6.png new file mode 100644 index 0000000..2937ccb Binary files /dev/null and b/proj2/images/2-3-2-6.png differ diff --git a/proj2/images/2-3-3-1.png b/proj2/images/2-3-3-1.png new file mode 100644 index 0000000..152c4e6 Binary files /dev/null and b/proj2/images/2-3-3-1.png differ diff --git a/proj2/images/2-3-3-2.png b/proj2/images/2-3-3-2.png new file mode 100644 index 0000000..f388385 Binary files /dev/null and b/proj2/images/2-3-3-2.png differ diff --git a/proj2/images/2-3-3-3.png b/proj2/images/2-3-3-3.png new file mode 100644 index 0000000..52791c3 Binary files /dev/null and b/proj2/images/2-3-3-3.png differ diff --git a/proj2/images/2-3-3-4.png b/proj2/images/2-3-3-4.png new file mode 100644 index 0000000..fc0a67b Binary files /dev/null and b/proj2/images/2-3-3-4.png differ diff --git a/proj2/images/2-3-3-5.png b/proj2/images/2-3-3-5.png new file mode 100644 index 0000000..d7d3233 Binary files /dev/null and b/proj2/images/2-3-3-5.png differ diff --git a/proj2/images/2-3-3-6.png b/proj2/images/2-3-3-6.png new file mode 100644 index 0000000..813f270 Binary files /dev/null and b/proj2/images/2-3-3-6.png differ diff --git a/proj2/images/2-4-1-1.png b/proj2/images/2-4-1-1.png new file mode 100644 index 0000000..74a7848 Binary files /dev/null and b/proj2/images/2-4-1-1.png differ diff --git a/proj2/images/2-4-1-2.png b/proj2/images/2-4-1-2.png new file mode 100644 index 0000000..43edb87 Binary files /dev/null and b/proj2/images/2-4-1-2.png differ diff --git a/proj2/images/2-4-1-3.png b/proj2/images/2-4-1-3.png new file mode 100644 index 0000000..e1e7cb0 Binary files /dev/null and b/proj2/images/2-4-1-3.png differ diff --git a/proj2/images/2-4-1-4.png b/proj2/images/2-4-1-4.png new file mode 100644 index 0000000..f57c929 Binary files /dev/null and b/proj2/images/2-4-1-4.png differ diff --git a/proj2/images/2-4-1-5.png b/proj2/images/2-4-1-5.png new file mode 100644 index 0000000..45d1c0d Binary files /dev/null and b/proj2/images/2-4-1-5.png differ diff --git a/proj2/images/2-4-1-6.png b/proj2/images/2-4-1-6.png new file mode 100644 index 0000000..cf9e89e Binary files /dev/null and b/proj2/images/2-4-1-6.png differ diff --git a/proj2/images/2-4-2-1.png b/proj2/images/2-4-2-1.png new file mode 100644 index 0000000..9a07edd Binary files /dev/null and b/proj2/images/2-4-2-1.png differ diff --git a/proj2/images/2-4-2-2.png b/proj2/images/2-4-2-2.png new file mode 100644 index 0000000..fea759f Binary files /dev/null and b/proj2/images/2-4-2-2.png differ diff --git a/proj2/images/2-4-2-3.png b/proj2/images/2-4-2-3.png new file mode 100644 index 0000000..8686775 Binary files /dev/null and b/proj2/images/2-4-2-3.png differ diff --git a/proj2/images/2-4-2-4.png b/proj2/images/2-4-2-4.png new file mode 100644 index 0000000..f48d3c2 Binary files /dev/null and b/proj2/images/2-4-2-4.png differ diff --git a/proj2/images/2-4-3-1.png b/proj2/images/2-4-3-1.png new file mode 100644 index 0000000..2d90219 Binary files /dev/null and b/proj2/images/2-4-3-1.png differ diff --git a/proj2/images/2-4-3-2.png b/proj2/images/2-4-3-2.png new file mode 100644 index 0000000..ad36a17 Binary files /dev/null and b/proj2/images/2-4-3-2.png differ diff --git a/proj2/images/2-4-3-3.png b/proj2/images/2-4-3-3.png new file mode 100644 index 0000000..ae22a10 Binary files /dev/null and b/proj2/images/2-4-3-3.png differ diff --git a/proj2/images/2-4-3-4.png b/proj2/images/2-4-3-4.png new file mode 100644 index 0000000..f893452 Binary files /dev/null and b/proj2/images/2-4-3-4.png differ diff --git a/proj2/images/diff_op.png b/proj2/images/diff_op.png new file mode 100644 index 0000000..bcc511f Binary files /dev/null and b/proj2/images/diff_op.png differ diff --git a/proj2/index.html b/proj2/index.html new file mode 100644 index 0000000..3579409 --- /dev/null +++ b/proj2/index.html @@ -0,0 +1,862 @@ + + + +
+ +This project explores the frequency domain of images. In the first part, I built an edge detection algorithm + using the Finite Derivative Operator and used the Gaussian filter to eliminate the effect of noises in edge + detection. In the second part, I tried two ways of image blending. The first method blends the high and low + frequencies of two images to create different impressions when looking from far and close distances. The second + method used the technology called multiresolution blending introduced in the 1983 paper by Burt and Adelson. This + method can create a seamless effect when blending two images with masks.
+ + +Finite derivative operator is a primitive way to detect edges. In the code, I used two simple convolution kernel + to detect edges horizontally and vertically.
+ +I used `signal.convolve2d` from the SciPy library to convolve the image with the two kernels. The result of this + convolution is the gradient of the image.
+ +
+
+ |
+
+
+ |
+
To create a better result, I binarized the gradient images to make the edges obvious. I choose a threshold of + 0.25 (in range [0, 1]) so that any pixel under this value will be black and above this value will be white.
+
+
+ |
+
+
+ |
+
Combining the two edges using `np.sqrt(edge_imgX ** 2 + edge_imgY ** 2)` (l2 norm) can create the complete edge + image: +
+
+ |
+
+
It's easy to notice that there is noise on the background. Applying a Gaussian filter can be a good way to get + rid of the noise. I created the Gaussian filter by first called cv2.getGaussianKernel() to create a 1D filter. + Then, I calculated the outer product of two 1d Gaussian filter to create a 2D Gaussian convolution kernel. Then I + convolved the image using the Gaussian kernel. It creates blurred images that also eliminate the noise.
+ +
+
+ |
+
+
I can now take the finite derivative operator on the blurred image to achieve a better result from edge + detection. We can see from the result that the detected edges are smoother and less noise. +
+
+
+ |
+
+
+ |
+
Choose 0.1 as the threshold for binarizing:
+
+
+ |
+
+
+ |
+
Combining the two edge images using the algorithm above creates this:
+
+
+ |
+
+
+
+ |
+
+
Since both applying the Gaussian filter and taking the finite derivative are linear operation, the order of the + operations does not matter. I could take the finite derivative on the Gaussian filter first and then apply the + derivative of Gaussian on the image.
+
+
+ |
+
+
+
+ |
+
+
+ |
+
+
+
+ |
+
+
+
+ |
+
+
Still choose 0.1 as the threshold for binarizing:
+
+
+ |
+
+
+
+ |
+
+
Combining the two edge images using the algorithm above creates this:
+
+
+ |
+
+
+
+ |
+
+
We can see either ways create mostly identical results except for some minor differences. The two binarized + images are exactly the same under the same threshold. This is becasue finite derivative and Gaussian filter are + both linear process. Hence the order of the two manipulation does not matter.
+
+
+ |
+
+
+ |
+
+
The idea of image sharpening is to add more high frequency content to the image. Adding high frequency content + can make the image look like having more details. To extract the high frequency content, we first create a blurred + version of the image (represent to low frequency part). Then we subtract the original image with the blurred + image. Finally, we could add the extracted high frequency content to the original image to create a sharpen image. +
+ + +High frequency of the R, G, B channels of Taj:
+
+
+ |
+
+
+ |
+
+
+ |
+
+
Adding high frequency to the original image:
+
+
+ |
+
+
+ |
+ + + | + +
High frequency of the R, G, B channels of Parrot:
+
+
+ |
+
+
+ |
+
+
+ |
+
+
Adding high frequency to the original image:
+
+
+ |
+
+
+ |
+
+
+
I then blur the image first and try sharpen the image to recover its initial status.
+Blur the Parrot using Gaussian filter:
+
+
+ |
+
+
+ |
+
+
+
High frequency of the R, G, B channels of Parrot:
+
+
+ |
+
+
+ |
+
+
+ |
+
+
Adding high frequency to the original image:
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
The result shows that although sharpening the blurred image can make it looks sharper than the blurred one. + However, it's still pretty obvious that it lacks some details compare to the original image. The lost information + cannot be recovered by image sharpening.
+ +This part of the project is to create hybrid images using the method introduced in the paper published in the + SIGGRAPH + 2006 by Oliva, Torralba, and Schyns. The key idea is to merge the high frequency of one image and the low frequency + of + another image. When looking close to the image, the high frequency part is clear, thus look like the first image. + However, when looking in a far distance, we can only see the low frequency part, so it looks like the second image. +
+My approach is still use the Gaussian filter to get the low frequency part of an image. Then use the original image + minus the low frequency part to get the high frequency part.
+ +In Nutmeg and Derek's example, I will create an image using the high frequency of Nutmeg and low frequency of + Derek.
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ with Gaussian sigma 10 |
+
+
+ _ |
+
+
+ with Gaussian sigma 13 |
+
+
+ Frequency Domain |
+
+
+ Frequency Domain |
+
+
+ Frequency Domain |
+
Diving into the frequency domain, the algorithm works successfully on extracting the high and low frequencies. From + Nutmeg's high frequency image, the high frequency part is enhanced and low frequency part is reduced. In the Derek + Low Frequency's frequency domain, only low frequencies are left in the image.
+ +
+
+ |
+
+
In the next example, I blended me with a dog I don't know the name who trying to steal my food.
+
+
+ |
+
+
+ |
+
+
+ with Gaussian sigma 10 |
+
+
+ _ |
+
+
+ with Gaussian sigma 13 |
+
+
+ |
+
+
In another example, I tried to blend two emoji together.
+
+
+ |
+
+
+ |
+
+
+ with Gaussian sigma 10 |
+
+
+ _ |
+
+
+ with Gaussian sigma 13 |
+
+
+ |
+
+
A image stack is a group of images with the same resolution. However, filters are applied to different layer of + stack.
+To create a Laplacian Stack, I need to first create a Gaussian stack. The Gaussian stack implementation is simply + taking the original image as the first layer and applying the Gaussian filter on the previous layer as the next + layer. Then for the Laplacian stack, each layer will be the same layer of the Gaussian stack minus the next layer of + the Gaussian stack. For the last layer of the Laplacian stack, it just uses the same image as the last layer of the + Gaussian stack.
+ + ++ + + | ++ + + | + + +
+ + + | ++ + | + + +
+ + | ++ + | + + +
+ + | ++ + | + + +
+ + | ++ + | + + +
+
+ |
+
+
+ |
+
+
+
+
The key point of the multiresolution blending is to blend different frequency with differnt masks to create a + seamless effect. The approach first crate a Gaussian stack for the mask and Laplacian stacks for two images that + are going to stack. After that, for each layer of the stack, the algorithm blends them using `blended_img = (1 - + mask) * img1 + mask * img2`. As a result, different frequencies are blended with suitable masks.
+The oraple is blended from an apple image and an orange image from the previous part.
++ + | +
+ + | + +
+ + | + +
+ + | + +
+ + | + +
+
+ |
+
+
I find a set of images collected by Pablo Rochat interesting. I decided to blend some images from his photo collection
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+ |
+
+