Enquanto estava no deserto, meu sensor ficou empoeirado. Fiquei semanas fora e não notei isso até o final da minha viagem, por isso tenho centenas de fotos com sujeira no sensor. Durante as férias, a poeira piorou gradualmente à medida que eu trocava as lentes com frequência. Depois das minhas férias, limpei o sensor profissionalmente e as novas fotos não têm manchas, mas estou procurando uma solução para as fotos das férias.
Para limpar minhas fotos, usei o Gimp para produzir uma máscara dos locais dos piores pedaços de poeira:
em seguida, usou o gmic para removê-los da linha de comando:
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
Embora essa não seja uma solução ideal, porque essencialmente recompõe essas áreas do zero (sem usar as informações de segundo plano), fornece resultados satisfatórios no céu azul. Imaginei que dessa maneira, eu poderia automatizar o processo através das centenas de imagens afetadas. Infelizmente, a poeira não é estacionária, portanto isso não funciona. Ele muda na ordem de 20 pixels, o que corresponde a cerca de 80 µm. Não sei se isso se deve à poeira fisicamente deslocada ou se pode ser devido ao processamento de imagens na câmera, como estabilização de imagem ou correção de lente. Tirei algumas imagens em bruto e JPEG e, para essas imagens, vejo visualmente uma ligeira mudança no formato da imagem.
É muito sutil, mas se você comparar as duas imagens a seguir, a maior e mais proeminente poeira passou de centralizada no pixel (1677, 619)
para centralizada no pixel (1655, 603)
. Por outro lado, um pixel menos proeminente à direita passou de (4919, 1485)
para (4940, 1483)
. Talvez não deva surpreender que pedaços de poeira possam se deslocar em relação ao sensor?
As fotos são tiradas com aproximadamente 90 minutos de intervalo. As imagens que publiquei foram reduzidas por um fator 2.
Os dados EXIF incluem dados da Sony Makernote, que podem incluir informações sobre estabilização de imagem, como ImageStabilization = 1
. Não sei se inclui mais detalhes sobre a estabilização de imagem. Ele inclui um campo Sony_0x201f = 128 17 2 0
que parece variar entre as imagens, mas é idêntico entre as duas imagens mostradas acima, portanto, não identifica (exclusivamente) as informações para corrigir a estabilização da imagem. Não sei se existe outro campo. Os dados exif completos (conforme relatado por exiftool -v
) para uma imagem mostram:
ExifToolVersion = 10.10 FileName = 08-35-11.jpg Diretório =. FileSize = 9440161 FileModifyDate = 1528067625 FileAccessDate = 1529519016 FileInodeChangeDate = 1528150970 FilePermissions = 33204 FileType = JPEG FileTypeExtension = JPG MIMEType = imagem / jpeg JPEG APP1 (44908 bytes): ExifByteOrder = II + [Diretório IFD0 com 13 entradas] | 0) ProcessingSoftware = digiKam-5.6.0 | 1) ImageDescription = | 2) Marca = SONY | 3) Modelo = ILCE-6000 | 4) Orientação = 1 | 5) XResolução = 350 (350/1) | 6) Resolução Y = 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 (SubDirectory) -> | + [Diretório ExifIFD com 38 entradas] | | 0) ExposureTime = 0.003125 (1/320) | | 1) FNumber = 11 (110/10) | | 2) Programa de Exposição = 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) ExposureCompensation = 0 (0/10) | | 13) MaxApertureValue = 3.6171875 (926/256) | | 14) MeteringMode = 5 | | 15) Fonte de luz = 0 | | 16) Flash = 16 | | 17) Comprimento focal = 18 (180/10) | | 18) MakerNoteSony (subdiretório) -> | | + [Diretório MakerNotes com 94 entradas] | | | 0) Sony_0x1003 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | | | 1) Sony_0x2000 = 0 | | | 2) PreviewImage = | | | 3) Classificação = 0 | | | 4) Sony_0x2003 = | | | 5) Contraste = 0 | | | 6) Saturação = 0 | | | 7) Nitidez = 0 | | | 8) Brilho = 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 (subdiretório) -> | | | + [Diretório BinaryData, 390 bytes] | | | | FaceInfoOffset = 94 | | | | SonyDateTime = 2018: 05: 11 08:35:11 | | | | SonyImageHeight = 4000 | | | | SonyImageWidth = 6000 | | | | FacesDetected = 0 | | | | FaceInfoLength = 37 | | | | MetaVersion = DC7303320222000 | | | 16) CreativeStyle = Padrão | | | 17) ColorTemperature = 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) Qualidade = 2 | | | 28) FlashExposureComp = 0 (0/10) | | | 29) WhiteBalanceFineTune = 0 | | | 30) WhiteBalance = 0 | | | 31) SonyModelID = 312 | | | 32) Teleconversor = 0 | | | 33) MultiFrameNoiseReduction = 0 | | | 34) PictureEffect = 0 | | | 35) SoftSkinEffect = 0 | | | 36) VignettingCorrection = 2 | | | 37) LateralChromaticAberration = 2 | | | 38) DistortionCorrectionSetting = 0 | | | 39) Sony_0x2015 = 65535 | | | 40) Tipo de lente = 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 | | | 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-desfocagem = 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 (subdiretório) -> | | | + [Diretório BinaryData, 556 bytes] | | | | ReleaseMode2 = 0 | | | | ShotNumberSincePowerUp = 2 | | | | SequenceImageNumber = 0 | | | | SequenceLength = 1 | | | | SequenceFileNumber = 0 | | | | SequenceLength = 1 | | | | CameraOrientation = 1 | | | | Qualidade2 = 0 | | | | SonyImageHeight = 500 | | | | ModelReleaseYear = 14 | | | 75) Sony_0x9401 = ..f .... pW ..). 6Q. \. (. GG..6 \ 6.GG..6 \ 6 .. $ .......... ^. ..3..s. [Snip] | | | 76) Tag9402 (subdiretório) -> | | | + [Diretório BinaryData, 400 bytes] | | | | AmbientTemperature = 21 | | | | FocusMode = 2 | | | | AFAreaMode = 1 | | | | FocusPosition2 = 202 | | | 77) Tag9403 (subdiretório) -> | | | + [Diretório BinaryData, 1000 bytes] | | | 78) Tag9404b (subdiretório) -> | | | + [Diretório BinaryData, 556 bytes] | | | | LensZoomPosition = 27 | | | 79) Tag9405b (subdiretório) -> | | | + [Diretório BinaryData, 1992 bytes] | | | | 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 | | | | ExposureProgram = 1 | | | | CreativeStyle = 0 | | | | Nitidez = 0 | | | | DistortionCorrection = 0 | | | | LensFormat = 1 | | | | LensMount = 2 | | | | LensType2 = 32787 | | | | LensZoomPosition = 27 | | | 80) Tag9406 (subdiretório) -> | | | + [Diretório BinaryData, 64 bytes] | | | | BatteryTemperature = 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. (.... eu ......... `s .......... i7. @. Sp ......> ... ..... @ .......... z ...% ...>. | | | 86) Tag940c (subdiretório) -> | | | + [Diretório BinaryData, 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 (subdiretório) -> | | | + [Diretório BinaryData, 12288 bytes] | | | 89) Sony_0xa100 = | | | 90) Tag2010g (subdiretório) -> | | | + [Diretório BinaryData, 6556 bytes] | | | | 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 | | | | Qualidade2 = 0 | | | | MeteringMode = 0 | | | | ExposureProgram = 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 @. @...........[recorte] | | | 92) Tag9050 (subdiretório) -> | | | + [Diretório BinaryData, 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 ........................................ ...............[recorte] | | 19) Comentário do Usuário = | | 20) FlashpixVersion = 0100 | | 21) ColorSpace = 1 | | 22) ExifImageWidth = 6000 | | 23) ExifImageHeight = 4000 | | 24) InteropOffset (SubDirectory) -> | | + [Diretório InteropIFD com 2 entradas] | | | 0) InteropIndex = R98 | | | 1) InteropVersion = 0100 | | 25) Origem do arquivo = 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) Saturação = 0 | | 35) Nitidez = 0 | | 36) LensInfo = 18 200 3,5 6,3 (180/10 2000/10 35/10 63/10) | | 37) Modelo da lente = E 18-200mm F3.5-6.3 OSS | 12) PrintIM (SubDirectory) -> | + [Diretório PrintIM com 3 entradas] | | PrintIMVersion = 0300 | | 0) PrintIM_0x0002 = 1 | | 1) PrintIM_0x0003 = 34 | | 2) PrintIM_0x0101 = 0 + [Diretório IFD1 com 13 entradas] | 0) Compressão = 6 | 1) ImageDescription = | 2) Marca = SONY | 3) Modelo = ILCE-6000 | 4) Orientação = 1 | 5) Resolução X = 72 (72/1) | 6) Resolução Y = 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 bytes): + [Diretório XMP, 2796 bytes] | XMPToolkit = XMP Core 4.4.0-Exiv2 | Software = digiKam-5.6.0 | Ferramenta de criação = digiKam-5.6.0 | Legenda = Monumento Nacional Grand Canyon-Parashant, ao longo da Estrada Clayhole | Título = Monumento Nacional Grand Canyon-Parashant, ao longo da Estrada Clayhole JPEG APP13 (126 bytes): + [Diretório do Photoshop, 112 bytes] | IPTCData (subdiretório) -> | + [Diretório IPTC, 99 bytes] | | CurrentIPTCDigest = ~ .g..z .... 3P} R .. | | - Registro IPTCEnvelope - | | CodedCharacterSet =.% G | | - Registro IPTCApplication - | | OriginatingProgram = digiKam | | ProgramVersion = 5.6.0 | | ObjectName = Monumento Nacional Parashant do Grand Canyon, ao longo da Roa de Clayhole JPEG APP2 (156 bytes): + [Diretório MPF0 com 3 entradas] | 0) MPFVersion = 0100 | 1) NumberOfImages = 2 | 2) MPImageList (subdiretório) -> | + [Diretório BinaryData, 16 bytes] | | MPImageFlags = 2684354560 | | MPImageFormat = 0 | | MPImageType = 196608 | | MPImageLength = 8768466 | | MPImageStart = 0 | | DependentImage1EntryNumber = 2 | | DependentImage2EntryNumber = 0 | + [Diretório BinaryData, 16 bytes] | | MPImageFlags = 1073741824 | | MPImageFormat = 0 | | MPImageType = 65538 | | MPImageLength = 664145 | | MPImageStart = 8724632 | | DependentImage1EntryNumber = 0 | | DependentImage2EntryNumber = 0 DQT JPEG (130 bytes): JPEG DHT (416 bytes): SOF0 JPEG (15 bytes): ImageWidth = 6000 ImageHeight = 4000 EncodingProcess = 0 BitsPerSample = 8 ColorComponents = 3 JPEG SOS Aviso = [menor] Erro ao ler PreviewImage PreviewImage = SCALAR (0x19b5ab8)
Quais ferramentas existem para remover digitalmente automaticamente a poeira do sensor de uma grande série de fotos? Tenho centenas de fotos afetadas (essencialmente qualquer coisa tirada em F / 8 ou menor). É mais óbvio quando a região afetada está no céu; portanto, uma solução que funciona apenas para o céu é satisfatória. Supondo que o pó não se mova muito longe, deve ser possível usar algum tipo de técnica de correspondência para calcular uma nova máscara para cada foto, antes de aplicá-la usando tinta ou outro método. Embora seja simples na teoria, implementar isso pode ser bastante trabalhoso na prática - e nem tenho certeza se a pintura é uma boa solução.
Além de reparar manualmente cada foto (leva 4 minutos de tempo de cálculo sozinho na minha área de trabalho antiga), quais ferramentas existem para reparar toda a minha série de fotos (ou pelo menos as que foram tiradas em F / 8 ou menor com céu nas áreas afetadas) ?
Eu trabalho no Linux e meu kit de ferramentas usual consiste em digikam, darktable, gimp e Python. A câmera é uma Sony A6000 relativamente nova (câmera sem espelho / compacta). Algumas fotos são tiradas com uma lente OSS Sony 18–200 mm, outras com uma lente manual Samyang 12 mm.
align_image_stack
- vou ver se isso pode me ajudar!