@@ -61,26 +61,23 @@ def __getitem__(self, index):
61
61
dtype_long = torch .LongTensor
62
62
63
63
# pick a scene
64
- scene_directory = self .get_random_scene_directory ()
65
64
scene_name = self .get_random_scene_name ()
66
65
67
-
68
-
69
66
# image a
70
- img_a_idx = self .get_random_image_index (scene_name , )
71
- image_a_rgb , image_a_depth , image_a_mask , image_a_pose = self .get_rgbd_mask_pose (scene_name , img_a_idx )
67
+ image_a_idx = self .get_random_image_index (scene_name )
68
+ image_a_rgb , image_a_depth , image_a_mask , image_a_pose = self .get_rgbd_mask_pose (scene_name , image_a_idx )
72
69
73
70
# image b
74
- img_b_idx = self .get_img_idx_with_different_pose (scene_name , image_a_pose , num_attempts = 50 )
71
+ image_b_idx = self .get_img_idx_with_different_pose (scene_name , image_a_pose , num_attempts = 50 )
75
72
76
- if img_b_idx is None :
73
+ if image_b_idx is None :
77
74
logging .info ("no frame with sufficiently different pose found, returning" )
78
75
print "no frame with sufficiently different pose found, returning"
79
76
return "matches" , image_a_rgb , image_a_rgb , torch .zeros (1 ).type (dtype_long ), torch .zeros (1 ).type (
80
77
dtype_long ), torch .zeros (1 ).type (dtype_long ), torch .zeros (1 ).type (dtype_long )
81
78
82
79
83
- image_b_rgb , image_b_depth , image_b_mask , image_b_pose = self .get_rgbd_mask_pose (scene_name , img_b_idx )
80
+ image_b_rgb , image_b_depth , image_b_mask , image_b_pose = self .get_rgbd_mask_pose (scene_name , image_b_idx )
84
81
85
82
86
83
num_attempts = 50000
@@ -97,7 +94,6 @@ def __getitem__(self, index):
97
94
image_b_depth_numpy , image_b_pose ,
98
95
num_attempts = num_attempts , img_a_mask = np .asarray (image_a_mask ))
99
96
100
-
101
97
if uv_a is None :
102
98
print "No matches this time"
103
99
return "matches" , image_a_rgb , image_b_rgb , torch .zeros (1 ).type (dtype_long ), torch .zeros (1 ).type (dtype_long ), torch .zeros (1 ).type (dtype_long ), torch .zeros (1 ).type (dtype_long )
@@ -152,8 +148,6 @@ def __getitem__(self, index):
152
148
if self .tensor_transform is not None :
153
149
image_a_rgb , image_b_rgb = self .both_to_tensor ([image_a_rgb , image_b_rgb ])
154
150
155
-
156
-
157
151
uv_a_long = (torch .t (uv_a [0 ].repeat (num_non_matches_per_match , 1 )).contiguous ().view (- 1 ,1 ),
158
152
torch .t (uv_a [1 ].repeat (num_non_matches_per_match , 1 )).contiguous ().view (- 1 ,1 ))
159
153
uv_b_non_matches_long = (uv_b_non_matches [0 ].view (- 1 ,1 ), uv_b_non_matches [1 ].view (- 1 ,1 ) )
@@ -166,28 +160,17 @@ def __getitem__(self, index):
166
160
uv_a_long = uv_a_long .squeeze (1 )
167
161
uv_b_non_matches_long = uv_b_non_matches_long .squeeze (1 )
168
162
169
-
170
163
return "matches" , image_a_rgb , image_b_rgb , uv_a , uv_b , uv_a_long , uv_b_non_matches_long
171
164
172
- def get_random_rgbd_with_pose (self , scene_directory ):
173
- rgb_filename = self .get_random_rgb_image_filename (scene_directory )
174
- depth_filename = self .get_depth_filename (rgb_filename )
175
-
176
- rgb = self .get_rgb_image (rgb_filename )
177
- depth = self .get_depth_image (depth_filename )
178
- pose = self .get_pose (rgb_filename )
179
-
180
- return rgb , depth , pose
181
-
182
165
def get_rgbd_mask_pose (self , scene_name , img_idx ):
183
166
"""
184
167
Returns rgb image, depth image, mask and pose.
185
168
:param scene_name:
186
169
:type scene_name: str
187
170
:param img_idx:
188
171
:type img_idx: int
189
- :return:
190
- :rtype:
172
+ :return: rgb, depth, mask, pose
173
+ :rtype: PIL.Image.Image, PIL.Image.Image, PIL.Image.Image, a 4x4 numpy array
191
174
"""
192
175
rgb_file = self .get_image_filename (scene_name , img_idx , ImageType .RGB )
193
176
rgb = self .get_rgb_image (rgb_file )
@@ -202,27 +185,6 @@ def get_rgbd_mask_pose(self, scene_name, img_idx):
202
185
203
186
return rgb , depth , mask , pose
204
187
205
- def get_random_rgbd_with_pose_and_mask (self , scene_directory ):
206
- rgb_filename = self .get_random_rgb_image_filename (scene_directory )
207
- depth_filename = self .get_depth_filename (rgb_filename )
208
- mask_filename = self .get_mask_filename (rgb_filename )
209
-
210
- rgb = self .get_rgb_image (rgb_filename )
211
- depth = self .get_depth_image (depth_filename )
212
- pose = self .get_pose (rgb_filename )
213
- mask = self .get_mask_image (mask_filename )
214
-
215
- return rgb , depth , pose , mask
216
-
217
- def get_random_rgb_with_mask (self , scene_directory ):
218
- rgb_filename = self .get_random_rgb_image_filename (scene_directory )
219
- mask_filename = self .get_mask_filename (rgb_filename )
220
-
221
- rgb = self .get_rgb_image (rgb_filename )
222
- mask = self .get_mask_image (mask_filename )
223
-
224
- return rgb , mask
225
-
226
188
def get_img_idx_with_different_pose (self , scene_name , pose_a , threshold = 0.2 , num_attempts = 10 ):
227
189
"""
228
190
Try to get an image with a different pose to the one passed in. If one can't be found
@@ -235,8 +197,8 @@ def get_img_idx_with_different_pose(self, scene_name, pose_a, threshold=0.2, num
235
197
:type threshold:
236
198
:param num_attempts:
237
199
:type num_attempts:
238
- :return:
239
- :rtype:
200
+ :return: an index with a different-enough pose
201
+ :rtype: int or None
240
202
"""
241
203
242
204
counter = 0
@@ -252,41 +214,11 @@ def get_img_idx_with_different_pose(self, scene_name, pose_a, threshold=0.2, num
252
214
return None
253
215
254
216
255
- def get_different_rgbd_with_pose (self , scene_directory , image_a_pose ):
256
- # try to get a far-enough-away pose
257
- # if can't, then just return last sampled pose
258
- num_attempts = 0
259
- while num_attempts < 10 :
260
- rgb_filename = self .get_random_rgb_image_filename (scene_directory )
261
- depth_filename = self .get_depth_filename (rgb_filename )
262
- pose = self .get_pose (rgb_filename )
263
- if self .different_enough (image_a_pose , pose ):
264
- break
265
- num_attempts += 1
266
-
267
- rgb = self .get_rgb_image (rgb_filename )
268
- depth = self .get_depth_image (depth_filename )
269
- return rgb , depth , pose
270
-
271
- def get_different_rgbd_with_pose_and_mask (self , scene_directory , image_a_pose ):
272
- # try to get a far-enough-away pose
273
- # if can't, then just return last sampled pose
274
- num_attempts = 0
275
- while num_attempts < 10 :
276
- rgb_filename = self .get_random_rgb_image_filename (scene_directory )
277
- depth_filename = self .get_depth_filename (rgb_filename )
278
- pose = self .get_pose (rgb_filename )
279
- mask_filename = self .get_mask_filename (rgb_filename )
280
- if self .different_enough (image_a_pose , pose ):
281
- break
282
- num_attempts += 1
283
-
284
- rgb = self .get_rgb_image (rgb_filename )
285
- depth = self .get_depth_image (depth_filename )
286
- mask = self .get_mask_image (mask_filename )
287
- return rgb , depth , pose , mask
288
-
289
217
def get_rgb_image (self , rgb_filename ):
218
+ """
219
+ :param depth_filename: string of full path to depth image
220
+ :return: PIL.Image.Image, in particular an 'RGB' PIL image
221
+ """
290
222
return Image .open (rgb_filename ).convert ('RGB' )
291
223
292
224
def get_rgb_image_from_scene_name_and_idx (self , scene_name , img_idx ):
@@ -300,20 +232,17 @@ def get_rgb_image_from_scene_name_and_idx(self, scene_name, img_idx):
300
232
return self .get_rgb_image (img_filename )
301
233
302
234
def get_depth_image (self , depth_filename ):
303
- return Image .open (depth_filename )
304
-
305
- def get_depth_image_from_scene_name_and_idx (self , scene_name , img_idx ):
306
235
"""
307
- Returns a depth image given a scene_name and image index
308
- :param scene_name:
309
- :param img_idx: str or int
236
+ :param depth_filename: string of full path to depth image
310
237
:return: PIL.Image.Image
311
238
"""
312
-
313
- img_filename = self .get_image_filename (scene_name , img_idx , ImageType .DEPTH )
314
- return self .get_depth_image (img_filename )
239
+ return Image .open (depth_filename )
315
240
316
241
def get_mask_image (self , mask_filename ):
242
+ """
243
+ :param mask_filename: string of full path to mask image
244
+ :return: PIL.Image.Image
245
+ """
317
246
return Image .open (mask_filename )
318
247
319
248
def get_mask_image_from_scene_name_and_idx (self , scene_name , img_idx ):
@@ -344,23 +273,6 @@ def get_random_rgb_image_filename(self, scene_directory):
344
273
random_rgb_image = random .choice (all_rgb_images_in_scene )
345
274
return random_rgb_image
346
275
347
- def get_specific_rgbd_with_pose (self , scene_name , img_index ):
348
- """
349
- Returns a rgbd image along with the camera pose for a specific image
350
- in a specific scene
351
- :param scene_name:
352
- :param img_index:
353
- :return:
354
- """
355
- rgb_filename = self .get_specific_rgb_image_filename (scene_name , img_index )
356
- depth_filename = self .get_depth_filename (rgb_filename )
357
-
358
- rgb = self .get_rgb_image (rgb_filename )
359
- depth = self .get_depth_image (depth_filename )
360
- pose = self .get_pose (rgb_filename )
361
-
362
- return rgb , depth , pose
363
-
364
276
def get_specific_rgb_image_filname (self , scene_name , img_index ):
365
277
DeprecationWarning ("use get_specific_rgb_image_filename instead" )
366
278
return self .get_specific_rgb_image_filename (scene_name , img_index )
0 commit comments