Dans le désert, mon capteur est devenu poussiéreux. J'étais absent pendant des semaines et je n'ai pas remarqué cela jusqu'à la fin de mon voyage, j'ai donc des centaines de photos avec des saletés de capteur. Pendant les vacances, la poussière s'est progressivement dégradée, car je changeais souvent d'objectif. Après mes vacances, j'ai fait nettoyer le capteur par un professionnel et les nouvelles photos n'ont pas de taches, mais je cherche une solution pour les photos de vacances.
Pour nettoyer mes photos, j'ai utilisé The Gimp pour produire un masque des emplacements des pires morceaux de poussière:
puis utilisé gmic pour les supprimer de la ligne de commande:
gmic 08-34-51.jpg ../../../dustmask_20180606_sky_flat_neg.png +inpaint_patchmatch[0] [1],10,7,4,2,1,0 -o[2] 08-34-51-clean.jpg
Bien que ce ne soit pas une solution optimale car il repeint essentiellement ces zones à partir de zéro (sans utiliser les informations d'arrière-plan), il fournit des résultats satisfaisants dans le ciel bleu. J'ai pensé que de cette façon, je pouvais automatiser le processus sur les centaines d'images affectées. Malheureusement, la poussière n'est pas stationnaire, donc cela ne fonctionne pas. Il se déplace de l'ordre de 20 pixels, ce qui correspond à environ 80 µm. Je ne sais pas si cela est dû à la poussière qui se déplace physiquement, ou si cela peut être dû au traitement d'image intégré à l'appareil, comme la stabilisation de l'image ou la correction de l'objectif. J'ai pris quelques images en raw et JPEG, et pour ces images je peux voir visuellement un léger changement dans la forme de l'image.
C'est très subtil, mais si vous comparez les deux images suivantes, le morceau de poussière le plus grand et le plus proéminent est passé du centre au pixel (1677, 619)
au centre au pixel (1655, 603)
. À l'autre extrémité, un pixel moins visible à droite est passé de (4919, 1485)
à (4940, 1483)
. Peut-être ne devrait-il pas être trop surprenant que des morceaux de poussière puissent se déplacer et se déplacent par rapport au capteur?
Les photos sont prises à environ 90 minutes d'intervalle. Les images que j'ai publiées sont sous-échantillonnées d'un facteur 2.
Les données EXIF incluent les données Sony Makernote, qui peuvent inclure des informations sur la stabilisation d'image, telles que ImageStabilization = 1
. Je ne sais pas si cela inclut plus de détails sur la stabilisation d'image. Il comprend un champ Sony_0x201f = 128 17 2 0
, qui semble varier entre les images, mais est identique entre les deux images ci-dessus, de sorte qu'il n'identifie pas (uniquement) les informations à corriger pour la stabilisation de l'image. Je ne sais pas si un autre domaine le fait. Les données exif complètes (telles que rapportées par exiftool -v
) pour une image montrent:
ExifToolVersion = 10.10 FileName = 08-35-11.jpg Répertoire =. FileSize = 9440161 FileModifyDate = 1528067625 FileAccessDate = 1529519016 FileInodeChangeDate = 1528150970 FilePermissions = 33204 FileType = JPEG FileTypeExtension = JPG MIMEType = image / jpeg JPEG APP1 (44908 octets): ExifByteOrder = II + [Répertoire IFD0 avec 13 entrées] | 0) ProcessingSoftware = digiKam-5.6.0 | 1) ImageDescription = | 2) Marque = SONY | 3) Modèle = ILCE-6000 | 4) Orientation = 1 | 5) XResolution = 350 (350/1) | 6) Résolution Y = 350 (350/1) | 7) ResolutionUnit = 2 | 8) Logiciel = ILCE-6000 v3.20 | 9) ModifyDate = 2018: 05: 11 08:35:11 | 10) YCbCrPositioning = 2 | 11) ExifOffset (sous-répertoire) -> | + [Répertoire ExifIFD avec 38 entrées] | | 0) Temps d'exposition = 0,003125 (1/320) | | 1) FNumber = 11 (110/10) | | 2) Programme d'exposition = 3 | | 3) ISO = 100 | | 4) SensitivityType = 2 | | 5) RecommendedExposureIndex = 100 | | 6) ExifVersion = 0230 | | 7) DateTimeOriginal = 2018: 05: 11 08:35:11 | | 8) CreateDate = 2018: 05: 11 08:35:11 | | 9) ComponentsConfiguration = 1 2 3 0 | | 10) CompressedBitsPerPixel = 3 (3/1) | | 11) BrightnessValue = 10,76328125 (27554/2560) | | 12) Compensation d'exposition = 0 (0/10) | | 13) MaxApertureValue = 3,6171875 (926/256) | | 14) MeteringMode = 5 | | 15) Source de lumière = 0 | | 16) Flash = 16 | | 17) FocalLength = 18 (180/10) | | 18) MakerNoteSony (sous-répertoire) -> | | + [Répertoire MakerNotes avec 94 entrées] | | | 0) Sony_0x1003 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | | | 1) Sony_0x2000 = 0 | | | 2) PreviewImage = | | | 3) Évaluation = 0 | | | 4) Sony_0x2003 = | | | 5) Contraste = 0 | | | 6) Saturation = 0 | | | 7) Netteté = 0 | | | 8) Luminosité = 0 | | | 9) LongExposureNoiseReduction = 1 | | | 10) HighISONoiseReduction = 2 | | | 11) HDR = 0 0 | | | 12) Sony_0x200c = 0 0 0 | | | 13) Sony_0x200d = 1 (10/10) | | | 14) WBShiftAB_GM = 0 0 | | | 15) ShotInfo (sous-répertoire) -> | | | + [Répertoire BinaryData, 390 octets] | | | | FaceInfoOffset = 94 | | | | SonyDateTime = 2018: 05: 11 08:35:11 | | | | SonyImageHeight = 4000 | | | | SonyImageWidth = 6000 | | | | FacesDetected = 0 | | | | FaceInfoLength = 37 | | | | MetaVersion = DC7303320222000 | | | 16) CreativeStyle = Standard | | | 17) Température de couleur = 0 | | | 18) ColorCompensationFilter = 0 | | | 19) SceneMode = 0 | | | 20) ZoneMatching = 0 | | | 21) DynamicRangeOptimizer = 3 | | | 22) Stabilisation d'image = 1 | | | 23) ColorMode = 0 | | | 24) FullImageSize = 4000 6000 | | | 25) PreviewImageSize = 1080 1616 | | | 26) FileFormat = 3 3 1 0 | | | 27) Qualité = 2 | | | 28) FlashExposureComp = 0 (0/10) | | | 29) WhiteBalanceFineTune = 0 | | | 30) WhiteBalance = 0 | | | 31) SonyModelID = 312 | | | 32) Téléconvertisseur = 0 | | | 33) MultiFrameNoiseReduction = 0 | | | 34) PictureEffect = 0 | | | 35) SoftSkinEffect = 0 | | | 36) VignettingCorrection = 2 | | | 37) LateralChromaticAberration = 2 | | | 38) DistortionCorrectionSetting = 0 | | | 39) Sony_0x2015 = 65535 | | | 40) LensType = 65535 | | | 41) LensSpec = ... 5c | | | 42) AutoPortraitFramed = 0 | | | 43) FlashAction = 0 | | | 44) Sony_0x2018 = 0 | | | 45) Sony_0x2019 = 0 | | | 46) Sony_0x201a = 1 | | | 47) FocusMode = 2 | | | 48) AFAreaModeSetting = 1 | | | 49) FlexibleSpotPosition = 0 0 | | | 50) AFZoneSelected = 0 | | | 51) Sony_0x201f = 128 17 2 0 | | | 52) AFPointsUsed = 0 0 0 0 0 0 0 0 0 0 | | | 53) Sony_0x2021 = 0 | | | 54) FocalPlaneAFPointsUsed = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | | | 55) Sony_0x2023 = 0 | | | 56) Sony_0x5001 = 0 (0/1000) | | | 57) Sony_0x5002 = 128 | | | 58) ExposureMode = 7 | | | 59) Sony_0xb045 = 0 | | | 60) Sony_0xb046 = 0 | | | 61) JPEGQuality = 65535 | | | 62) FlashLevel = 0 | | | 63) ReleaseMode = 0 | | | 64) SequenceNumber = 0 | | | 65) Anti-flou = 2 | | | 66) Sony_0xb04c = 1 (10/10) | | | 67) Sony_0xb04d = 0 | | | 68) DynamicRangeOptimizer = 1 | | | 69) Sony_0xb050 = 65535 | | | 70) Sony_0xb051 = 0 | | | 71) IntelligentAuto = 0 | | | 72) Sony_0xb053 = 0 | | | 73) WhiteBalance = 0 | | | 74) Tag9400c (sous-répertoire) -> | | | + [Répertoire BinaryData, 556 octets] | | | | ReleaseMode2 = 0 | | | | ShotNumberSincePowerUp = 2 | | | | SequenceImageNumber = 0 | | | | SequenceLength = 1 | | | | SequenceFileNumber = 0 | | | | SequenceLength = 1 | | | | CameraOrientation = 1 | | | | Qualité2 = 0 | | | | SonyImageHeight = 500 | | | | ModelReleaseYear = 14 | | | 75) Sony_0x9401 = ..f .... pW ..). 6Q. \. (. GG..6 \ 6.GG..6 \ 6 .. $ .......... ^. ..3..s. [Snip] | | | 76) Tag9402 (sous-répertoire) -> | | | + [Répertoire BinaryData, 400 octets] | | | | Température ambiante = 21 | | | | FocusMode = 2 | | | | AFAreaMode = 1 | | | | FocusPosition2 = 202 | | | 77) Tag9403 (sous-répertoire) -> | | | + [Répertoire BinaryData, 1000 octets] | | | 78) Tag9404b (sous-répertoire) -> | | | + [Répertoire BinaryData, 556 octets] | | | | LensZoomPosition = 27 | | | 79) Tag9405b (sous-répertoire) -> | | | + [Répertoire BinaryData, 1992 octets] | | | | SonyISO = 4096 | | | | BaseISO = 4096 | | | | StopsAboveBaseISO = 4096 | | | | SonyExposureTime2 = 6208 | | | | ExposureTime = 0,003125 | | | | SonyFNumber = 5888 | | | | SonyMaxApertureValue = 5054 | | | | SequenceImageNumber = 0 | | | | ReleaseMode2 = 0 | | | | HighISONoiseReduction = 2 | | | | LongExposureNoiseReduction = 1 | | | | PictureEffect2 = 0 | | | | Programme d'exposition = 1 | | | | CreativeStyle = 0 | | | | Netteté = 0 | | | | DistortionCorrection = 0 | | | | LensFormat = 1 | | | | LensMount = 2 | | | | LensType2 = 32787 | | | | LensZoomPosition = 27 | | | 80) Tag9406 (sous-répertoire) -> | | | + [Répertoire BinaryData, 64 octets] | | | | BatterieTempérature = 87 | | | | BatteryLevel = 55 | | | 81) Sony_0x9407 = .2WW. ^ .... AT..W ..>. WSi ... lw ... W ............. T..i .... ... T .... Wl | | | 82) Sony_0x9408 = i .... * ...... \ ... * ..} ...... u} .. C. = .. @. [. 8k. & ... | ...... C ^ .. pp .. [snip] | | | 83) Sony_0x9409 =. ... l. (.... I ......... `... s .......... i7. @. Sp ......> ... ..... @ .......... z ...% ...>. [snip] | | | 86) Tag940c (sous-répertoire) -> | | | + [Répertoire BinaryData, 64 octets] | | | | LensMount2 = 4 | | | | LensType3 = 32787 | | | | CameraE-mountVersion = 336 | | | | LensE-mountVersion = 263 | | | | LensFirmwareVersion = 1 | | | 87) Sony_0x940d = ...... g ...... z ...? .. u ............. GO.D ..... qUx ... ? .... el .... 8 [snip] | | | 88) Tag940e (sous-répertoire) -> | | | + [Répertoire BinaryData, 12288 octets] | | | 89) Sony_0xa100 = | | | 90) Tag2010g (sous-répertoire) -> | | | + [Répertoire BinaryData, 6556 octets] | | | | ReleaseMode2 = 0 | | | | DynamicRangeOptimizer = 1 | | | | ReleaseMode3 = 0 | | | | ReleaseMode2 = 0 | | | | FlashMode = 1 | | | | StopsAboveBaseISO = 4096 | | | | BrightnessValue = 17245 | | | | DynamicRangeOptimizer = 1 | | | | HDRSetting = 0 | | | | ExposureCompensation = 0 | | | | PictureProfile = 0 | | | | PictureProfile = 0 | | | | PictureEffect2 = 0 | | | | Qualité2 = 0 | | | | MeteringMode = 0 | | | | Programme d'exposition = 1 | | | | WB_RGBLevels = 690 256 427 | | | | FocalLength = 180 | | | | MinFocalLength = 180 | | | | MaxFocalLength = 2000 | | | | SonyISO = 4096 | | | | LensFormat = 1 | | | | LensMount = 2 | | | | LensType2 = 32787 | | | 91) Sony_0x940f = liVi. $ ........) .... @ .. f ......... & .... @ ... Y @) .. Y @. @...........[couper] | | | 92) Tag9050 (sous-répertoire) -> | | | + [Répertoire BinaryData, 944 octets] | | | | FlashStatus = 64 | | | | ImageCount = 3836 | | | | SonyFNumber = 5888 | | | | ReleaseMode2 = 0 | | | | ImageCount2 = 3836 | | | | SonyDateTime2 = .... #. | | | | ReleaseMode2 = 0 | | | | InternalSerialNumber = 162 254 226 13 | | | | LensMount = 2 | | | | LensFormat = 1 | | | | LensType2 = 32787 | | | | LensSpecFeatures =. | | | | ImageCount3 = 44765 | | | 93) Sony_0x9412 = ... @. V ........................................ ...............[couper] | | 19) UserComment = | | 20) FlashpixVersion = 0100 | | 21) ColorSpace = 1 | | 22) ExifImageWidth = 6000 | | 23) ExifImageHeight = 4000 | | 24) InteropOffset (sous-répertoire) -> | | + [Répertoire InteropIFD avec 2 entrées] | | | 0) InteropIndex = R98 | | | 1) InteropVersion = 0100 | | 25) FileSource = 3 | | 26) SceneType = 1 | | 27) CustomRendered = 0 | | 28) ExposureMode = 0 | | 29) WhiteBalance = 0 | | 30) DigitalZoomRatio = 1 (16/16) | | 31) FocalLengthIn35mmFormat = 27 | | 32) SceneCaptureType = 0 | | 33) Contraste = 0 | | 34) Saturation = 0 | | 35) Netteté = 0 | | 36) LensInfo = 18 200 3,5 6,3 (180/10 2000/10 35/10 63/10) | | 37) LensModel = E 18-200mm F3.5-6.3 OSS | 12) PrintIM (sous-répertoire) -> | + [Répertoire PrintIM avec 3 entrées] | | PrintIMVersion = 0300 | | 0) PrintIM_0x0002 = 1 | | 1) PrintIM_0x0003 = 34 | | 2) PrintIM_0x0101 = 0 + [Répertoire IFD1 avec 13 entrées] | 0) Compression = 6 | 1) ImageDescription = | 2) Marque = SONY | 3) Modèle = ILCE-6000 | 4) Orientation = 1 | 5) XResolution = 72 (72/1) | 6) Résolution Y = 72 (72/1) | 7) ResolutionUnit = 2 | 8) Logiciel = ILCE-6000 v3.20 | 9) ModifyDate = 2018: 05: 11 08:35:11 | 10) ThumbnailOffset = 38476 | 11) ThumbnailLength = 6426 | 12) YCbCrPositioning = 2 JPEG APP1 (2825 octets): + [Répertoire XMP, 2796 octets] | XMPToolkit = XMP Core 4.4.0-Exiv2 | Logiciel = digiKam-5.6.0 | CreatorTool = digiKam-5.6.0 | Légende = Monument national du Grand Canyon-Parashant, le long de Clayhole Road | Titre = Monument national du Grand Canyon-Parashant, le long de Clayhole Road JPEG APP13 (126 octets): + [Répertoire Photoshop, 112 octets] | IPTCData (sous-répertoire) -> | + [Répertoire IPTC, 99 octets] | | CurrentIPTCDigest = ~ .g..z .... 3P} R .. | | - Enregistrement IPTCEnvelope - | | CodedCharacterSet =.% G | | - Enregistrement IPTCApplication - | | OriginatingProgram = digiKam | | ProgramVersion = 5.6.0 | | ObjectName = Grand Canyon-Parashant National Monument, le long du Clayhole Roa JPEG APP2 (156 octets): + [Répertoire MPF0 avec 3 entrées] | 0) MPFVersion = 0100 | 1) NumberOfImages = 2 | 2) MPImageList (sous-répertoire) -> | + [Répertoire BinaryData, 16 octets] | | MPImageFlags = 2684354560 | | MPImageFormat = 0 | | MPImageType = 196608 | | MPImageLength = 8768466 | | MPImageStart = 0 | | DependentImage1EntryNumber = 2 | | DependentImage2EntryNumber = 0 | + [Répertoire BinaryData, 16 octets] | | MPImageFlags = 1073741824 | | MPImageFormat = 0 | | MPImageType = 65538 | | MPImageLength = 664145 | | MPImageStart = 8724632 | | DependentImage1EntryNumber = 0 | | DependentImage2EntryNumber = 0 JPEG DQT (130 octets): JPEG DHT (416 octets): JPEG SOF0 (15 octets): ImageWidth = 6000 ImageHeight = 4000 EncodingProcess = 0 BitsPerSample = 8 ColorComponents = 3 JPEG SOS Warning = [mineur] Erreur lors de la lecture de PreviewImage PreviewImage = SCALAIRE (0x19b5ab8)
Quels outils existent pour éliminer automatiquement et numériquement la poussière du capteur d'une grande série de photos? J'ai des centaines de photos affectées (essentiellement tout ce qui a été pris à F / 8 ou moins). C'est plus évident lorsque la région affectée est dans le ciel, donc une solution qui fonctionne uniquement pour le ciel est satisfaisante. En supposant que la poussière ne se déplace pas trop loin, il devrait être possible d'utiliser une sorte de technique d'appariement pour calculer un nouveau masque pour chaque photo, avant de l'appliquer à l'aide de l'inpainting ou d'une autre méthode. Bien que simple en théorie, sa mise en œuvre peut être assez laborieuse dans la pratique - et je ne suis même pas sûr que la peinture soit une bonne solution.
À moins de réparer manuellement chaque photo (cela prend 4 minutes de temps de calcul seul sur mon ancien bureau), quels outils existent pour réparer toute ma série de photos (ou au moins celles prises à F / 8 ou moins avec du ciel dans les zones touchées) ?
Je travaille sur Linux et ma boîte à outils habituelle se compose de digikam, darktable, gimp et Python. L'appareil photo est un tout nouveau Sony A6000 (appareil photo sans miroir / compact). Certaines photos sont prises avec un objectif Sony 18–200 mm OSS, d'autres avec un objectif manuel Samyang 12 mm.
align_image_stack
- je vais voir si cela peut m'aider!Réponses:
Quelque chose comme ça n'a actuellement aucune solution technique - je suppose que vous devez le faire manuellement ou attendre une solution soutenue par AI / ML.
Cela étant dit, vous pourriez obtenir un certain succès avec cet outil:
http://www.batchcrop.com/dust-spot-removal.php
Il en coûte 49 $.
la source