Forum

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Thibaud Capra

Pages: 1 2 [3] 4 5 ... 7
31
General / Re: All White Object Distortion
« on: April 03, 2017, 04:53:03 PM »
In photogrammetry, when your target has a uniform texture, it might be hard to generate points in a non-noisy manner. This wavy effect as you call it is most likely noise.
You could try and use the smoothing tool for your model. Be careful accuracy-wise though!

32
General / Re: Setting coordinate system via markers
« on: April 03, 2017, 04:50:24 PM »
Yes you can georeference your model using GCPs. Basically, if you have the coordinates of a few points in your model (3 is the very minimum but I'd recommend having more) you can create a transformation matrix to move it to a georeferenced system.

33
+1 on this: having a choice between both modes would be great.

I can see wanting it, but I'd also like to be able to stick with the current blue squares. When checking for alignment/height issues possibly relating to geotagging it's very convenient to just see blue squares.

34
Hello Alexey,

Here's an update: it didn't work.

I added a chunk = doc.chunk between the Align Photos where I'm saving the project and the densification but it does not work. I guess it's not the right place!

Here's the code:

Code: [Select]
chunk.matchPhotos(accuracy = PhotoScan.MediumAccuracy,
    preselection = PhotoScan.ReferencePreselection, filter_mask = False,
    keypoint_limit = 40000, tiepoint_limit = 4000)
chunk.alignCameras()
doc.save(project_path_reco)

chunk = doc.chunk

chunk.buildDenseCloud(quality = PhotoScan.MediumQuality,
filter = PhotoScan.AggressiveFiltering)
doc.save(project_path_reco)

chunkIter = 1
chunk = doc.chunk                 # active chunk, if there's any in the project
while chunkIter <= nbTrous:
      chunk.label = "Trou" + str(chunkIter) + "-Green"
      chunk =  doc.chunk.copy()
      chunk.label = "Trou" + str(chunkIter) + "-Approche"
      chunk =  doc.chunk.copy()
      chunkIter += 1

35
Hello Alexey,

I did not know that! Thanks for helping. I'll run the new code right away and see... Tomorrow, 24 hours computing time.

As a heads up, I ran my chunk duplicating part only on the single dense cloud I had manually computed and I had my 40 chunks with the dense cloud each time, so I can confirm it's not my hardware limiting whatsoever.

Thanks again.

36
Hello Jeremiah,

I would do that but I'm also using the whole point cloud for other purposes.
Basically the whole point cloud is processed (saved in a different file) using another script, and the AOI are processed individually using a third script for finer resolution. Try to imagine a process branching out, and this first part is the common part to both, so I need this to work!

37
Hello Alexey,

Yes, the full code includes the point cloud densification before duplicatinig chunks. According to the console, there's a line saying "XXXX points extracted".

I did the point cloud manually in one chunk, it have it now displayed properly. I'll try to run the chunk duplication with a separate script if that's what you mean?

Here's the full code:

Code: [Select]
import os, sys, PhotoScan

doc = PhotoScan.app.document
chunk = doc.addChunk()
nbTrous = int(sys.argv[1])
path_photos = PhotoScan.app.getExistingDirectory("""Spécifiez le dossier
 contenant les photos""")
path_photos += "\\"

# Checking save filename
project_path = PhotoScan.app.getSaveFileName("""Spécifiez le nom du projet
 à enregistrer : """)
if not project_path:
    print("""Annulation du script : pas de chemin d'enregistrement fourni""")

if project_path[-4:].lower() != ".psx":
    project_path += ".psx"

# Saving for G3D Reco
project_path_reco = PhotoScan.app.getSaveFileName("""Spécifiez le nom du projet
 à enregistrer pour Green 3D Reco : """)
if not project_path_reco:
    print("""Annulation du script : pas de chemin d'enregistrement fourni""")

if project_path_reco[-4:].lower() != ".psx":
    project_path_reco += ".psx"

image_list = os.listdir(path_photos)
photo_list = list()
for photo in image_list:
    if photo.rsplit(".",1)[1].upper() in ["JPG", "JPEG", "TIF", "PNG"]:
           photo_list.append(path_photos + photo)
           print(photo)
    else:
           print("""Pas de photo exploitable dans le dossier.""")
print(photo_list)
chunk.addPhotos(photo_list)
PhotoScan.app.update()

chunk.matchPhotos(accuracy = PhotoScan.MediumAccuracy,
    preselection = PhotoScan.ReferencePreselection, filter_mask = False,
    keypoint_limit = 40000, tiepoint_limit = 4000)
chunk.alignCameras()
doc.save(project_path_reco)

chunk.buildDenseCloud(quality = PhotoScan.MediumQuality,
filter = PhotoScan.AggressiveFiltering)
doc.save(project_path_reco)

chunkIter = 1
chunk = doc.chunk                 # active chunk, if there's any in the project
while chunkIter <= nbTrous:
      chunk.label = "Trou" + str(chunkIter) + "-Green"
      chunk =  doc.chunk.copy()
      chunk.label = "Trou" + str(chunkIter) + "-Approche"
      chunk =  doc.chunk.copy()
      chunkIter += 1

doc.save(project_path)

Bonus question: how can I use the PhotoScan.estimateImageQuality to align only photos with a quality score > 0,5?

38
Hello Alexey,

I'm using this piece of code:

Code: [Select]
chunkIter = 1
chunk = doc.chunk                 # active chunk, if there's any in the project
while chunkIter <= nbTrous:
      chunk.label = "Trou" + str(chunkIter) + "-Green"
      chunk =  doc.chunk.copy()
      chunk.label = "Trou" + str(chunkIter) + "-Approche"
      chunk =  doc.chunk.copy()
      chunkIter += 1

39
Hello Alexey,

No, I can't see it. The only thing is the chunk is "Tie Points".
I can do the Meshing step though.
By the way, PhotoScan 1.2.6 here.

40
General / Re: recomented hardware for photoscan
« on: March 28, 2017, 11:27:23 AM »
In case the AMD Ryzen is confirmed fully supported, as SAV said, here's a PCPartPicker list with an AMD Ryzen 1800X and a GTX 1080 Ti, 64Gb RAM to safely do stuff with your computer!

The PSU allows future upgrades too.

If you want to stick to Intel/nVidia combo, there you go. Mind the potential BIOS update though, due to the 6800K using Broadwell architecture.

41
Hello,

I'm working with heavy point clouds (~300 million points) where I need to locate areas of interest to then work on these tiny areas.
Here's my workflow:
  • Align Photos
  • Densify Cloud
  • Duplicate chunk
  • Define AOI on dense cloud
  • Mesh
  • Texture
  • Export
The sparse cloud is way too sparse to locate the AOIs that's why I'm working on the dense cloud. As I'm working on an average 40 AOI per cloud, I have a Python script going through steps 1/2/3 then letting me do step 4 before running another script for steps 5/6/7.

Problem is, when running my script successfully, I have no dense cloud in my chunks. I checked the console, and it says it created 307.000.000 points. However, my chunks, even though being created, only contain the sparse clouds (1.117.000 points) !

Is it because of hardware issues?
Current workstation:
  • CPU: Intel Xeon E5 2650 v4
  • GPU: nVidia Quadro M4000
  • RAM: 64Gb
RAM's far from being overflowed: 13Gb are used... Maybe the GPU being unable to render it?
If it is a hardware issue, I'll change my workflow accordingly. If it isn't, where does it come from?

Thanks in advance.

42
General / Re: single, dual gtx 1060 or single 1070, 980
« on: March 21, 2017, 12:46:37 PM »
GTX 1060 don't support SLI, careful.

43
General / Re: Image Textures for Exported Files
« on: March 20, 2017, 11:51:47 AM »
Hello wyk,

I'd try CloudCompare.

44
General / Re: ISPRS ground filtering algorithm tests for PhotoScan
« on: March 20, 2017, 11:29:41 AM »
So far one can't import point clouds in PhotoScan, only meshes.

Maybe in an upcoming update!

45
Yes it is to be expected. There's a random picking part so you'll get slightly different results each time.

Pages: 1 2 [3] 4 5 ... 7