File size: 5,717 Bytes
17e2002
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
1
00:00:00,780 --> 00:00:05,010
Let's take a step back and look at fine and none fine transforms again.

2
00:00:05,400 --> 00:00:11,800
So imagine you have an image like this here where we have this is clearly not fine.

3
00:00:11,880 --> 00:00:16,900
Transform off an original top down flat image here you can see the lines here.

4
00:00:16,950 --> 00:00:21,510
They're not parallel anymore and they're actually going to join in some feature spot maybe some way

5
00:00:21,510 --> 00:00:21,930
up here.

6
00:00:21,930 --> 00:00:29,310
FLATOW So what it means is that if we have four points here we can actually use an open civic function

7
00:00:29,790 --> 00:00:35,340
to actually watch this transfer this image here and get an image like this.

8
00:00:35,370 --> 00:00:41,100
So clearly we can take a skewed image once we're aware of the four points of the corner and get back

9
00:00:41,100 --> 00:00:43,220
to your original image.

10
00:00:43,250 --> 00:00:46,380
So let's take a look at that implementing that in some code.

11
00:00:46,630 --> 00:00:46,900
OK.

12
00:00:46,910 --> 00:00:51,020
So let's look at implementing that perspective transform that we just saw.

13
00:00:51,020 --> 00:00:55,800
So you remember we firstly need the coordinates of the four corners and the original image.

14
00:00:55,880 --> 00:00:57,550
So that's what we actually have here.

15
00:00:57,560 --> 00:00:59,390
These are the four points here.

16
00:00:59,430 --> 00:01:05,930
We're basically combining it into points 3 here comprise of these four quadrants and then so it is that

17
00:01:06,120 --> 00:01:14,420
these will be called points then we have points B which is do up which is output which is a point that

18
00:01:14,430 --> 00:01:16,330
we let's go back to the image here.

19
00:01:16,350 --> 00:01:17,980
These are the points that we want to define here.

20
00:01:17,970 --> 00:01:21,670
So that's a typical for standard size.

21
00:01:22,110 --> 00:01:25,800
We need to get the data so that it actually knows what to transform it to.

22
00:01:26,190 --> 00:01:32,460
So what we do know we actually use these two points is two sets of points here with this open CV function

23
00:01:32,520 --> 00:01:34,480
called Get perspective transform.

24
00:01:34,770 --> 00:01:40,920
What this does it actually generates a matrix and this matrix here is is basically the transform that

25
00:01:40,920 --> 00:01:45,030
basically transforms points to points B.

26
00:01:45,270 --> 00:01:51,480
And then we use what perspective that function you may have seen previously to actually generate the

27
00:01:51,480 --> 00:01:57,270
or to use this sort of matrix here and generate the output image to be called warped here.

28
00:01:57,660 --> 00:02:00,600
And this is the final size of the image we want to see.

29
00:02:00,600 --> 00:02:02,860
So as you can see it's actually lines up with this here.

30
00:02:02,910 --> 00:02:07,020
These would have four coordinates of the output image that we wanted.

31
00:02:07,020 --> 00:02:15,690
So let's run this good and voila we get the actual warped page here.

32
00:02:16,260 --> 00:02:20,700
If you wanted to do something smarter you'd probably write an algorithm that gets to CONTO of this image

33
00:02:21,150 --> 00:02:26,550
that automatically gets the locations of the corner points then feeds it in and then we run everything

34
00:02:26,580 --> 00:02:27,840
automatically.

35
00:02:27,870 --> 00:02:31,950
It's actually not too hard to build is actually a low some blogs online that actually do it for you.

36
00:02:33,250 --> 00:02:37,410
So we've just seen how we generated Imitrex for none I transform.

37
00:02:37,500 --> 00:02:41,060
But what about affine transform that should be simpler right.

38
00:02:41,070 --> 00:02:46,900
And indeed it is you only need tree coordinates to actually generate the find transform.

39
00:02:46,900 --> 00:02:49,240
So similarly we have points in B.

40
00:02:49,420 --> 00:02:49,830
We are.

41
00:02:49,860 --> 00:02:52,310
We actually use a different image here and there's a reason for that.

42
00:02:52,320 --> 00:02:53,780
Also we use shortly.

43
00:02:54,100 --> 00:02:58,240
So we have tree coordinates for points in b tree coordinates for Point B.

44
00:02:58,240 --> 00:03:05,050
We use get affine transform as opposed to get perspective transform and we similarly implement those

45
00:03:05,050 --> 00:03:11,020
transforms using Wolpoff when we just switched to see I would call them Andrews which is similar to

46
00:03:11,020 --> 00:03:13,350
using the actual dimensions here.

47
00:03:13,660 --> 00:03:18,310
We just take it directly from the image and let's run this code here.

48
00:03:18,670 --> 00:03:20,500
So as you can see these are two

49
00:03:23,530 --> 00:03:25,380
ships that we wish to transform.

50
00:03:25,400 --> 00:03:28,190
So let's press any key and continue.

51
00:03:28,190 --> 00:03:35,180
And this is the affine transform as you can see it as I find transform actually rotated the image slightly

52
00:03:35,720 --> 00:03:41,840
didn't just scale anything but as you can see clearly all the lanes Montie and parallelism here.

53
00:03:42,200 --> 00:03:45,510
So that's one of the main points of transforms.

54
00:03:45,590 --> 00:03:51,500
So I hope you get a feel of using these functions here are actually quite handy and quite important

55
00:03:51,500 --> 00:03:53,930
when doing more complicated stuff in open C-v.