update
This commit is contained in:
147
pages/CSE332S/CSE332S_L17.md
Normal file
147
pages/CSE332S/CSE332S_L17.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# CSE332S Lecture 17
|
||||
|
||||
## Object Oriented Programming Building Blocks
|
||||
|
||||
OOP Building Blocks for Extensible, Flexible, and Reusable Code
|
||||
|
||||
Today: Techniques Commonly Used in Design Patterns
|
||||
|
||||
- **Program to an interface** (last time)
|
||||
- **Object composition and request forwarding** (today)
|
||||
- Composition vs. inheritance
|
||||
- **Run-time relationships between objects** (today)
|
||||
- Aggregate vs. acquaintance
|
||||
- **Delegation** (later...)
|
||||
|
||||
Next Time: Design Patterns
|
||||
|
||||
Describe the core of a repeatable solution to common design problems.
|
||||
|
||||
### Code Reuse: Two Ways to Reuse a Class
|
||||
|
||||
#### Inheritance
|
||||
|
||||
Code reuse by inheriting the implementation of a base class.
|
||||
|
||||
- **Pros:**
|
||||
- Inheritance relationships defined at compile-time - simple to understand.
|
||||
- **Cons:**
|
||||
- Subclass often inherits some implementation from superclass - derived class now depends on its base class implementation, leading to less flexible code.
|
||||
|
||||
#### Composition
|
||||
|
||||
Assemble multiple objects together to create new complex functionality, forward requests to the responsible assembled object.
|
||||
|
||||
- **Pros:**
|
||||
- Allows flexibility at run-time, composite objects often constructed dynamically by obtaining references/pointers to other objects (dependency injection).
|
||||
- Objects known only through their interface - increased flexibility, reduced impact of change.
|
||||
- **Cons:**
|
||||
- Code can be more difficult to understand, how objects interact may change dynamically.
|
||||
|
||||
### Example: Our First Design Pattern (Adapter Pattern)
|
||||
|
||||
**Problem:** We are given a class that we cannot modify for some reason - it provides functionality we need, but defines an interface that does not match our program (client code).
|
||||
|
||||
**Solution:** Create an adapter class, adapter declares the interface needed by our program, defines it by forwarding requests to the unmodifiable object.
|
||||
|
||||
Two ways to do this:
|
||||
|
||||
```cpp
|
||||
class unmodifiable {
|
||||
public:
|
||||
int func(); // does something useful, but doesn’t match the interface required by the client code
|
||||
};
|
||||
```
|
||||
|
||||
1. **Inheritance**
|
||||
|
||||
```cpp
|
||||
// Using inheritance:
|
||||
class adapter : protected unmodifiable {
|
||||
// open the access to the protected member func() for derived class
|
||||
public:
|
||||
int myFunc() {
|
||||
return func(); // forward request to encapsulated object
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
2. **Composition**
|
||||
|
||||
```cpp
|
||||
class adapterComp {
|
||||
unmodifiable var;
|
||||
public:
|
||||
int myFunc() {
|
||||
return var.func();
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Thinking About and Describing Run-time Relationships
|
||||
|
||||
Typically, composition is favored over inheritance! Object composition with programming to an interface allows relationships/interactions between objects to vary at run-time.
|
||||
|
||||
- **Aggregate:** Object is part of another. Its lifetime is the same as the object it is contained in. (similar to base class and derived class relationship)
|
||||
- **Acquaintance:** Objects know of each other, but are not responsible for each other. Lifetimes may be different.
|
||||
|
||||
```cpp
|
||||
// declare Printable Interface
|
||||
// declare printable interface
|
||||
class printable {
|
||||
public:
|
||||
virtual void print(ostream &o) = 0;
|
||||
};
|
||||
// derived classes defines printable
|
||||
// interface
|
||||
class smiley : public printable {
|
||||
public:
|
||||
virtual void print(ostream &o) {
|
||||
o << ":)";
|
||||
};
|
||||
};
|
||||
// second derived class defines
|
||||
// printable interface
|
||||
class frown : public printable {
|
||||
public:
|
||||
virtual void print(ostream &o) {o << ":(";
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
1. **Aggregate**
|
||||
|
||||
```cpp
|
||||
// implementation 1:
|
||||
// Aggregate relationship
|
||||
class emojis {
|
||||
printable * happy;
|
||||
printable * sad;
|
||||
public:
|
||||
emojis() {
|
||||
happy = new smiley();
|
||||
sad = new frown();
|
||||
};
|
||||
~emojis() {
|
||||
delete happy;
|
||||
delete sad;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
2. **Acquaintance**
|
||||
|
||||
```cpp
|
||||
// implementation 2:
|
||||
// Acquaintances only
|
||||
class emojis {
|
||||
printable * happy;
|
||||
printable * sad;
|
||||
public:
|
||||
emojis();
|
||||
~emojis();
|
||||
// dependency injection
|
||||
void setHappy(printable *);
|
||||
void setSad(printable *);
|
||||
};
|
||||
```
|
||||
71
pages/CSE559A/CSE559A_L19.md
Normal file
71
pages/CSE559A/CSE559A_L19.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# CSE559A Lecture 19
|
||||
|
||||
## Feature Detection
|
||||
|
||||
### Behavior of corner features with respect to Image Transformations
|
||||
|
||||
To be useful for image matching, “the same” corner features need to show up despite geometric and photometric transformations
|
||||
|
||||
We need to analyze how the corner response function and the corner locations change in response to various transformations
|
||||
|
||||
#### Affine intensity change
|
||||
|
||||
Solution:
|
||||
|
||||
- Only derivative of intensity are used (invariant to intensity change)
|
||||
- Intensity scaling
|
||||
|
||||
#### Image translation
|
||||
|
||||
Solution:
|
||||
|
||||
- Derivatives and window function are shift invariant
|
||||
|
||||
#### Image rotation
|
||||
|
||||
Second moment ellipse rotates but its shape (i.e. eigenvalues) remains the same
|
||||
|
||||
#### Scaling
|
||||
|
||||
Classify edges instead of corners
|
||||
|
||||
## Automatic Scale selection for interest point detection
|
||||
|
||||
### Scale space
|
||||
|
||||
We want to extract keypoints with characteristic scales that are equivariant (or covariant) with respect to scaling of the image
|
||||
|
||||
Approach: compute a scale-invariant response function over neighborhoods centered at each location $(x,y)$ and a range of scales $\sigma$, find scale-space locations $(x,y,\sigma)$ where this function reaches a local maximum
|
||||
|
||||
A particularly convenient response function is given by the scale-normalized Laplacian of Gaussian (LoG) filter:
|
||||
|
||||
$$
|
||||
\nabla^2_{norm}=\sigma^2\nabla^2\left(\frac{\partial^2}{\partial x^2}g+\frac{\partial^2}{\partial y^2}g\right)
|
||||
$$
|
||||
|
||||

|
||||
|
||||
#### Edge detection with LoG
|
||||
|
||||

|
||||
|
||||
#### Blob detection with LoG
|
||||
|
||||

|
||||
|
||||
### Difference of Gaussians (DoG)
|
||||
|
||||
DoG has a little more flexibility, since you can select the scales of the Gaussians.
|
||||
|
||||
### Scale-invariant feature transform (SIFT)
|
||||
|
||||
The main goal of SIFT is to enable image matching in the presence of significant transformations
|
||||
|
||||
- To recognize the same keypoint in multiple images, we need to match appearance descriptors or "signatures" in their neighborhoods
|
||||
- Descriptors that are locally invariant w.r.t. scale and rotation can handle a wide range of global transformations
|
||||
|
||||
### Maximum stable extremal regions (MSER)
|
||||
|
||||
Based on Watershed segmentation algorithm
|
||||
|
||||
Select regions that are stable over a large parameter range
|
||||
@@ -21,4 +21,5 @@ export default {
|
||||
CSE559A_L16: "Computer Vision (Lecture 16)",
|
||||
CSE559A_L17: "Computer Vision (Lecture 17)",
|
||||
CSE559A_L18: "Computer Vision (Lecture 18)",
|
||||
CSE559A_L19: "Computer Vision (Lecture 19)",
|
||||
}
|
||||
|
||||
@@ -1 +1,118 @@
|
||||
# Lecture 29
|
||||
# Math4121 Lecture 29
|
||||
|
||||
## Continue on Measure Theory
|
||||
|
||||
### Lebesgue Measure
|
||||
|
||||
Caratheodory's criterion:
|
||||
|
||||
$S$ is Lebesgue measurable if for all $A\subset S$,
|
||||
|
||||
$$
|
||||
m_e(X) = m_e(X\cap S) + m_e(X\cap S^c)
|
||||
$$
|
||||
|
||||
Let $\mathfrak{M}$ be the collection of all Lebesgue measurable sets.
|
||||
|
||||
1. $\phi\in\mathfrak{M}$
|
||||
2. $\mathfrak{M}$ is closed under countable unions (proved last lecture)
|
||||
3. $\mathfrak{M}$ is closed under complementation ($\mathfrak{M}$ is a $\sigma$-algebra) (goal today)
|
||||
|
||||
> Desired properties of a measure:
|
||||
>
|
||||
> 1. $m(I)=\ell(I)$ for all intervals $I$
|
||||
> 2. If $\{S_n\}_{n=1}^{\infty}$ is a set of pairwise disjoint Lebesgue measurable sets, then
|
||||
>
|
||||
> $$ m\left(\bigcup_{n=1}^{\infty}S_n\right) = \sum_{n=1}^{\infty}m(S_n)$$
|
||||
> 3. If $R\subset S$, then $m(S\setminus R) = m(S) - m(R)$
|
||||
|
||||
Recall the Borel $\sigma$-algebra $\mathcal{B}$ was the smallest $\sigma$-algebra containing closed intervals. Therefore $\mathcal{B}\subset\mathfrak{M}$.
|
||||
|
||||
Towards proving $\mathfrak{M}$ is closed under countable unions:
|
||||
|
||||
#### Theorem 5.9 (Finite union/intersection of Lebesgue measurable sets is Lebesgue measurable)
|
||||
|
||||
Any finite union/intersection of Lebesgue measurable sets is Lebesgue measurable.
|
||||
|
||||
Proof:
|
||||
|
||||
Suppose $S_1, S_2$ is a measurable, and we need to show that $S_1\cup S_2$ is measurable. Given $X$, need to show that
|
||||
|
||||

|
||||
|
||||
$$
|
||||
m_e(X) = m_e(X_1\cup X_2\cup X_3)+ m_e(X_4)
|
||||
$$
|
||||
|
||||
Since $S_1$ measurable, $m_e(X_1\cup X_2\cup X_3)=m_e(X_3)+m_e(X_1\cup X_2)$.
|
||||
|
||||
Since $S_2$ measurable, $m_e(X_3\cup X_4)=m_e(X_3)+m_e(X_4)$.
|
||||
|
||||
Therefore,
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
m_e(X) &= m_e(X_1\cup X_2\cup X_3) + m_e(X_4) \\
|
||||
&= m_e(X_1\cup X_2) + m_e(X_3)+m_e(X_4) \\
|
||||
&= m_e(X_1\cup X_2) + m_e(X_3\cup X_4) \\
|
||||
&= m_e(X)
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
by measurability of $S_1$ again.
|
||||
|
||||
QED
|
||||
|
||||
#### Theorem 5.10 (Countable union/intersection of Lebesgue measurable sets is Lebesgue measurable)
|
||||
|
||||
Any countable union/intersection of Lebesgue measurable sets is Lebesgue measurable.
|
||||
|
||||
Proof:
|
||||
|
||||
Let $\{S_j\}_{j=1}^{\infty}\subset\mathfrak{M}$. Definte $T_j=\bigcup_{k=1}^{j}S_k$ such that $T_{j-1}\subset T_j$ for all $j$.
|
||||
|
||||
And $U_1=T_1$, $U_j=T_j\setminus T_{j-1}$ for $j\geq 2$.
|
||||
|
||||
Then $\bigcup_{j=1}^{\infty}S_j=\bigcup_{j=1}^{\infty}T_j=\bigcup_{j=1}^{\infty}U_j$. Notice that $\{U_j\}_{j=1}^{\infty}$ are pairwise disjoint, and $\{T_j\}_{j=1}^{\infty}$ are monotone.
|
||||
|
||||
Let $X$ have finite outer measure. Since $U_n$ is measurable,
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
m_e(X\cap T_n) &= m_e(X\cap T_n\cap U_n)+ m_e(X\cap T_n\cap U_n^c) \\
|
||||
&= m_e(X\cap U_n)+ m_e(X\cap T_{n-1}) \\
|
||||
&= \sum_{j=1}^{n}m_e(X\cap U_j)
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
Since $T_n$ is measurable and $T_n\subset S$, $S^c\subset T_n^c$. $m_e(X\cap T_n^c)\geq m_e(X\cap S^c)$.
|
||||
|
||||
Therefore,
|
||||
|
||||
$$
|
||||
m_e(X)=m_e(X\cap T_n)+m_e(X\cap T_n^c)\\
|
||||
\geq \sum_{j=1}^{n}m_e(X\cap U_j)+m_e(X\cap S^c)
|
||||
$$
|
||||
|
||||
Take the limit as $n\to\infty$,
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
m_e(X) &\geq \sum_{j=1}^{\infty}m_e(X\cap U_j)+m_e(X\cap S^c) \\
|
||||
&= m_e(\bigcup_{j=1}^{\infty}(X\cap U_j))+m_e(X\cap S^c) \\
|
||||
&= m_e(X\cap S)+m_e(X\cap S^c) \\
|
||||
&\geq m_e(X)
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
Therefore, $m_e(X\cap S)=m_e(X)$.
|
||||
|
||||
Therefore, $S$ is measurable.
|
||||
|
||||
QED
|
||||
|
||||
#### Corollary from the proof
|
||||
|
||||
Every open or closed set is Lebesgue measurable.
|
||||
|
||||
(Every open set is a countable union of disjoint open intervals)
|
||||
|
||||
BIN
public/Math4121/Finite_union_cut.png
Normal file
BIN
public/Math4121/Finite_union_cut.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
Reference in New Issue
Block a user