In der Wüste wurde mein Sensor staubig. Ich war wochenlang unterwegs und habe dies erst am Ende meiner Reise bemerkt, daher habe ich Hunderte von Fotos mit Sensorschmutz. Während des Urlaubs wurde der Staub allmählich schlimmer, da ich häufig die Linsen wechselte. Nach meinem Urlaub ließ ich den Sensor professionell reinigen und neue Fotos haben keine Flecken, aber ich suche nach einer Lösung für die Urlaubsfotos.
Um meine Fotos zu bereinigen, habe ich The Gimp verwendet, um eine Maske der Orte der schlimmsten Staubstücke zu erstellen:
Verwenden Sie dann gmic, um sie von der Befehlszeile zu entfernen:
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
Dies ist zwar keine optimale Lösung, da diese Bereiche im Wesentlichen von Grund auf neu gestrichen werden (ohne Verwendung der Hintergrundinformationen), liefert jedoch zufriedenstellende Ergebnisse bei blauem Himmel. Ich dachte mir, dass ich auf diese Weise den Prozess über die Hunderte von betroffenen Bildern automatisieren könnte. Leider ist der Staub nicht stationär, so dass dies nicht funktioniert. Es verschiebt sich um die Größenordnung von 20 Pixeln, was ungefähr 80 um entspricht. Ich weiß nicht, ob dies darauf zurückzuführen ist, dass sich der Staub physisch bewegt, oder ob dies auf eine Bildverarbeitung in der Kamera wie Bildstabilisierung oder Objektivkorrektur zurückzuführen ist. Ich habe einige Bilder sowohl im Roh- als auch im JPEG-Format aufgenommen, und für diese Bilder kann ich visuell eine leichte Verschiebung in der Form des Bildes erkennen.
Es ist sehr subtil, aber wenn Sie die folgenden zwei Bilder vergleichen, hat sich das größte und auffälligste Staubstück von einer auf Pixel (1677, 619)
zentrierten zu einer auf Pixel zentrierten verschoben (1655, 603)
. Am anderen Ende hat sich ein weniger markantes Pixel rechts von (4919, 1485)
nach verschoben (4940, 1483)
. Vielleicht sollte es nicht allzu überraschend sein, dass sich Staubstücke relativ zum Sensor verschieben können und tun?
Die Fotos werden im Abstand von ca. 90 Minuten aufgenommen. Die von mir geposteten Bilder werden um den Faktor 2 heruntergerechnet.
Die EXIF-Daten enthalten Sony Makernote-Daten, die Informationen zur Bildstabilisierung enthalten können, wie z ImageStabilization = 1
. Ich weiß nicht, ob es weitere Details zur Bildstabilisierung enthält. Es enthält ein Feld Sony_0x201f = 128 17 2 0
, das zwischen den Bildern zu variieren scheint, zwischen den beiden oben gezeigten Bildern jedoch identisch ist, sodass Informationen, die zur Korrektur der Bildstabilisierung korrigiert werden sollen, nicht (eindeutig) identifiziert werden. Ich weiß nicht, ob es ein anderes Feld gibt. Die vollständigen Exif-Daten (wie von gemeldet exiftool -v
) für ein Bild zeigen:
ExifToolVersion = 10.10 FileName = 08-35-11.jpg Verzeichnis =. FileSize = 9440161 FileModifyDate = 1528067625 FileAccessDate = 1529519016 FileInodeChangeDate = 1528150970 FilePermissions = 33204 FileType = JPEG FileTypeExtension = JPG MIMEType = image / jpeg JPEG APP1 (44908 Byte): ExifByteOrder = II + [IFD0-Verzeichnis mit 13 Einträgen] | 0) ProcessingSoftware = digiKam-5.6.0 | 1) ImageDescription = | 2) Make = SONY | 3) Modell = ILCE-6000 | 4) Orientierung = 1 | 5) XResolution = 350 (350/1) | 6) YResolution = 350 (350/1) | 7) ResolutionUnit = 2 | 8) Software = ILCE-6000 v3.20 | 9) ModifyDate = 2018: 05: 11 08:35:11 | 10) YCbCrPositioning = 2 | 11) ExifOffset (Unterverzeichnis) -> | + [ExifIFD-Verzeichnis mit 38 Einträgen] | | 0) ExposureTime = 0,003125 (1/320) | | 1) FNumber = 11 (110/10) | | 2) ExposureProgram = 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) Komponentenkonfiguration = 1 2 3 0 | | 10) CompressedBitsPerPixel = 3 (3/1) | | 11) Helligkeitswert = 10,76328125 (27554/2560) | | 12) ExposureCompensation = 0 (0/10) | | 13) MaxApertureValue = 3,6171875 (926/256) | | 14) Messmodus = 5 | | 15) Lichtquelle = 0 | | 16) Flash = 16 | | 17) FocalLength = 18 (180/10) | | 18) MakerNoteSony (Unterverzeichnis) -> | | + [MakerNotes-Verzeichnis mit 94 Einträgen] | | | 0) Sony_0x1003 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | | | 1) Sony_0x2000 = 0 | | | 2) PreviewImage = | | | 3) Bewertung = 0 | | | 4) Sony_0x2003 = | | | 5) Kontrast = 0 | | | 6) Sättigung = 0 | | | 7) Schärfe = 0 | | | 8) Helligkeit = 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 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 390 Byte] | | | | FaceInfoOffset = 94 | | | | SonyDateTime = 2018: 05: 11 08:35:11 | | | | SonyImageHeight = 4000 | | | | SonyImageWidth = 6000 | | | | FacesDetected = 0 | | | | FaceInfoLength = 37 | | | | MetaVersion = DC7303320222000 | | | 16) CreativeStyle = Standard | | | 17) Farbtemperatur = 0 | | | 18) ColorCompensationFilter = 0 | | | 19) SceneMode = 0 | | | 20) ZoneMatching = 0 | | | 21) DynamicRangeOptimizer = 3 | | | 22) ImageStabilization = 1 | | | 23) ColorMode = 0 | | | 24) FullImageSize = 4000 6000 | | | 25) PreviewImageSize = 1080 1616 | | | 26) FileFormat = 3 3 1 0 | | | 27) Qualität = 2 | | | 28) FlashExposureComp = 0 (0/10) | | | 29) WhiteBalanceFineTune = 0 | | | 30) WhiteBalance = 0 | | | 31) SonyModelID = 312 | | | 32) Telekonverter = 0 | | | 33) MultiFrameNoiseReduction = 0 | | | 34) PictureEffect = 0 | | | 35) SoftSkinEffect = 0 | | | 36) Vignettierungskorrektur = 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 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 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-Unschärfe = 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 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 556 Bytes] | | | | ReleaseMode2 = 0 | | | | ShotNumberSincePowerUp = 2 | | | | SequenceImageNumber = 0 | | | | SequenceLength = 1 | | | | SequenceFileNumber = 0 | | | | SequenceLength = 1 | | | | CameraOrientation = 1 | | | | Qualität2 = 0 | | | | SonyImageHeight = 500 | | | | ModelReleaseYear = 14 | | | 75) Sony_0x9401 = ..f .... pW ..). 6Q. \. (. GG..6 \ 6.GG..6 \ 6 .. $ .......... ^. ..3..s. [Snip] | | | 76) Tag9402 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 400 Byte] | | | | Umgebungstemperatur = 21 | | | | FocusMode = 2 | | | | AFAreaMode = 1 | | | | FocusPosition2 = 202 | | | 77) Tag9403 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 1000 Bytes] | | | 78) Tag9404b (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 556 Bytes] | | | | LensZoomPosition = 27 | | | 79) Tag9405b (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 1992 Bytes] | | | | Sony ISO = 4096 | | | | BaseISO = 4096 | | | | StopsAboveBaseISO = 4096 | | | | SonyExposureTime2 = 6208 | | | | ExposureTime = 0,003125 | | | | SonyFNumber = 5888 | | | | SonyMaxApertureValue = 5054 | | | | SequenceImageNumber = 0 | | | | ReleaseMode2 = 0 | | | | HighISONoiseReduction = 2 | | | | LongExposureNoiseReduction = 1 | | | | PictureEffect2 = 0 | | | | ExposureProgram = 1 | | | | CreativeStyle = 0 | | | | Schärfe = 0 | | | | DistortionCorrection = 0 | | | | LensFormat = 1 | | | | LensMount = 2 | | | | LensType2 = 32787 | | | | LensZoomPosition = 27 | | | 80) Tag9406 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 64 Bytes] | | | | Batterietemperatur = 87 | | | | Batterielevel = 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 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 64 Bytes] | | | | 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 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 12288 Byte] | | | 89) Sony_0xa100 = | | | 90) Tag2010g (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 6556 Byte] | | | | 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ät2 = 0 | | | | Messmodus = 0 | | | | ExposureProgram = 1 | | | | WB_RGBLevels = 690 256 427 | | | | Brennweite = 180 | | | | MinFocalLength = 180 | | | | MaxFocalLength = 2000 | | | | Sony ISO = 4096 | | | | LensFormat = 1 | | | | LensMount = 2 | | | | LensType2 = 32787 | | | 91) Sony_0x940f = liVi. $ ........) .... @ .. f ......... & .... @ ... Y @) .. Y @. @ ........... [snip] | | | 92) Tag9050 (Unterverzeichnis) -> | | | + [BinaryData-Verzeichnis, 944 Bytes] | | | | 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 ........................................ ............... [snip] | | 19) UserComment = | | 20) FlashpixVersion = 0100 | | 21) ColorSpace = 1 | | 22) ExifImageWidth = 6000 | | 23) ExifImageHeight = 4000 | | 24) InteropOffset (Unterverzeichnis) -> | | + [InteropIFD-Verzeichnis mit 2 Einträgen] | | | 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) Kontrast = 0 | | 34) Sättigung = 0 | | 35) Schärfe = 0 | | 36) LensInfo = 18 200 3,5 6,3 (180/10 2000/10 35/10 63/10) | | 37) LensModel = E 18-200 mm F3.5-6.3 OSS | 12) PrintIM (Unterverzeichnis) -> | + [PrintIM-Verzeichnis mit 3 Einträgen] | | PrintIMVersion = 0300 | | 0) PrintIM_0x0002 = 1 | | 1) PrintIM_0x0003 = 34 | | 2) PrintIM_0x0101 = 0 + [IFD1-Verzeichnis mit 13 Einträgen] | 0) Komprimierung = 6 | 1) ImageDescription = | 2) Make = SONY | 3) Modell = ILCE-6000 | 4) Orientierung = 1 | 5) XResolution = 72 (72/1) | 6) YResolution = 72 (72/1) | 7) ResolutionUnit = 2 | 8) Software = ILCE-6000 v3.20 | 9) ModifyDate = 2018: 05: 11 08:35:11 | 10) ThumbnailOffset = 38476 | 11) ThumbnailLength = 6426 | 12) YCbCrPositioning = 2 JPEG APP1 (2825 Byte): + [XMP-Verzeichnis, 2796 Bytes] | XMPToolkit = XMP Core 4.4.0-Exiv2 | Software = digiKam-5.6.0 | CreatorTool = digiKam-5.6.0 | Bildunterschrift = Grand Canyon-Parashant National Monument entlang der Clayhole Road | Titel = Grand Canyon-Parashant National Monument entlang der Clayhole Road JPEG APP13 (126 Bytes): + [Photoshop-Verzeichnis, 112 Bytes] | IPTCData (Unterverzeichnis) -> | + [IPTC-Verzeichnis, 99 Bytes] | | CurrentIPTCDigest = ~ .g..z .... 3P} R .. | | - IPTCEnvelope-Datensatz - | | CodedCharacterSet =.% G. | | - IPTCApplication-Datensatz - | | OriginatingProgram = digiKam | | ProgramVersion = 5.6.0 | | ObjectName = Grand Canyon-Parashant National Monument entlang des Clayhole Roa JPEG APP2 (156 Bytes): + [MPF0-Verzeichnis mit 3 Einträgen] | 0) MPFVersion = 0100 | 1) NumberOfImages = 2 | 2) MPImageList (Unterverzeichnis) -> | + [BinaryData-Verzeichnis, 16 Bytes] | | MPImageFlags = 2684354560 | | MPImageFormat = 0 | | MPImageType = 196608 | | MPImageLength = 8768466 | | MPImageStart = 0 | | DependentImage1EntryNumber = 2 | | DependentImage2EntryNumber = 0 | + [BinaryData-Verzeichnis, 16 Bytes] | | MPImageFlags = 1073741824 | | MPImageFormat = 0 | | MPImageType = 65538 | | MPImageLength = 664145 | | MPImageStart = 8724632 | | DependentImage1EntryNumber = 0 | | DependentImage2EntryNumber = 0 JPEG DQT (130 Byte): JPEG DHT (416 Bytes): JPEG SOF0 (15 Bytes): ImageWidth = 6000 ImageHeight = 4000 EncodingProcess = 0 BitsPerSample = 8 ColorComponents = 3 JPEG SOS Warnung = [geringfügig] Fehler beim Lesen von PreviewImage PreviewImage = SCALAR (0x19b5ab8)
Welche Tools gibt es, um Sensorstaub aus einer großen Fotoserie automatisch digital zu entfernen? Ich habe Hunderte von betroffenen Fotos (im Wesentlichen alles, was mit F / 8 oder kleiner aufgenommen wurde). Es ist am offensichtlichsten, wenn sich die betroffene Region am Himmel befindet, sodass eine Lösung, die nur für den Himmel funktioniert, zufriedenstellend ist. Unter der Annahme, dass sich der Staub nicht zu weit bewegt , sollte es möglich sein, eine neue Maske zu verwenden, um für jedes Foto eine neue Maske zu berechnen, bevor Sie sie mit Inpainting oder einer anderen Methode anwenden. Obwohl dies theoretisch einfach ist, kann die Implementierung in der Praxis recht mühsam sein - und ich bin mir nicht einmal sicher, ob Inpainting eine gute Lösung ist.
Ohne jedes Foto manuell zu reparieren (es dauert allein auf meinem alten Desktop 4 Minuten Rechenzeit), welche Tools gibt es, um meine gesamte Fotoserie zu reparieren (oder zumindest diejenigen, die mit F / 8 oder kleiner mit Himmel in den betroffenen Bereichen aufgenommen wurden)? ?
Ich arbeite unter Linux und mein übliches Toolkit besteht aus Digikam, Darktable, Gimp und Python. Die Kamera ist eine ziemlich neue Sony A6000 (spiegellose / kompakte Systemkamera). Einige Fotos wurden mit einem Sony 18–200 mm OSS-Objektiv aufgenommen, andere mit einem manuellen Samyang 12 mm-Objektiv.
quelle
align_image_stack
- ich werde sehen, ob es mir helfen kann!Antworten:
So etwas hat derzeit keine technische Lösung - ich denke, Sie müssen es manuell tun oder auf eine AI / ML-gestützte Lösung warten.
Wenn dies gesagt wird, können Sie mit diesem Tool einige Erfolge erzielen:
http://www.batchcrop.com/dust-spot-removal.php
Es kostet 49 $.
quelle