PRZETWARZANIE OBRAZÓW: Morfologia
VII.
© P.Ślusarczyk 2013
Strona 1 z 2
1.
Przeanalizuj działanie następującego programu
#include <stdio.h>
#define N 11
#define M 20
int obraz[N][M] = {
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0 },
{ 0,0,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0 },
{ 0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0 },
{ 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0 },
{ 0,0,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0 },
{ 0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
int elStr[3][3] = {
{ 1,1,1 },
{ 1,1,1 },
{ 1,1,1 },
};
void wyswietlObraz()
{
int i,j;
printf("%c",0xDA);
for(j=0;j<M;j++) printf("%c",0xC4);
printf("%c\n",0xBF);
for(i=0;i<N;i++) {
printf("%c",0xB3);
for(j=0;j<M;j++)
printf("%c",(obraz[i][j]==1) ? 0xDB : 0xB0);
printf("%c\n",0xB3);
}
printf("%c",0xC0);
for(j=0;j<M;j++) printf("%c",0xC4);
printf("%c\n",0xD9);
}
int main()
{
wyswietlObraz();
getch();
return 0;
}
2.
Wykorzystując szkielet programu z zadanie 1, napisz program demonstracyjny
realizujący erozję i dylatację macierzy prostokątnej dla dowolnego elementu
strukturującego o rozmiarze 3x3.
3. Zaimplementuj operacje otwarcia
i zamknięcia.
Powtórz eksperyment przedstawiony na slajdzie nr 10 (Figure 9.10) w dokumencie:
4. Zaimplementuj
następujące operacje na zbiorach:
•
dopełnienie zbioru
• sum dwóch zbiorów
• iloczyn dwóch zbiorów
•
równość dwóch zbiorów
5. Zaimplementuj operacje
chybił-trafił.
Powtórz eksperyment przedstawiony na slajdzie nr 12 (Figure 9.12) w dokumencie:
6. Zaimplementuj gradient morfologiczny.
𝛽(𝐴) = 𝐴 − (𝐴 ⊖ 𝐵)
Powtórz eksperyment przedstawiony na slajdzie nr 13 (Figure 9.13) w dokumencie:
PRZETWARZANIE OBRAZÓW: Morfologia
VII.
© P.Ślusarczyk 2013
Strona 2 z 2
7. Zaimplementuj
algorytm wypełniania konturów.
𝑋
𝑘
= (𝑋
𝑘−1
⨁𝐵) ∩ 𝐴
𝑐
𝑘 = 1,2,3, …
Warunek początkowy: 𝑋
0
= 𝑝 – dowolny punkt wewnątrz konturu
Warunek końcowy: 𝑋
𝑘
= 𝑋
𝑘−1
Powtórz eksperyment przedstawiony na slajdzie nr 15 (Figure 9.15) w dokumencie:
8. Zaimplementuj
algorytm ekstrakcji połączonych elementów.
𝑋
𝑘
= (𝑋
𝑘−1
⨁𝐵) ∩
A
𝑘 = 1,2,3, …
Warunek początkowy: 𝑋
0
= 𝑝 – dowolny punkt należący do zbioru A
Warunek końcowy: 𝑋
𝑘
= 𝑋
𝑘−1
Powtórz eksperyment przedstawiony na slajdzie nr 17 (Figure 9.17) w dokumencie:
9. Zaimplementuj
algorytm wyznaczania otoczki wypukłej.
𝑋
𝑘
𝑖
= (𝑋
𝑘−1
⊖ 𝐵
𝑖
) ∪ 𝐴
𝑖 = 1,2,3,4
– numer elementu strukturującego
𝑘 = 1,2,3, …
Warunek początkowy: 𝑋
0
𝑖
= 𝐴
Warunek końcowy: 𝑋
𝑘
𝑖
= 𝑋
𝑘−1
𝑖
𝐶(𝐴) = � 𝐷
𝑖
gdzie 𝐷
𝑖
=
4
𝑖=1
𝑋
𝑘−1
𝑖
Powtórz eksperymenty przedstawione na slajdach nr 19 i 20 (Figure 9.19 i 9.20)
w dokumencie:
10. Zaimplementuj
operację rekonstrukcji poprzez dylatację geodezyjną.
𝐷
𝐺
(1)
(𝐹) = (𝐹⨁𝐵) ∩ 𝐺
dylatacja obrazu znacznika F przy użyciu jednostkowego
elementu strukturującego w ramach maski G
Powtórz eksperymenty przedstawione na slajdach nr 27 i 28 (Figure 9.27 i 9.28)
w dokumencie: