Mientras estaba en el desierto, mi sensor se volvió polvoriento. Estuve fuera durante semanas y no me di cuenta hasta el final de mi viaje, así que tengo cientos de fotos con sensor de suciedad. Durante las vacaciones, el polvo empeoró gradualmente a medida que cambiaba las lentes con frecuencia. Después de mis vacaciones, limpié profesionalmente el sensor y las fotos nuevas no tienen manchas, pero estoy buscando una solución para las fotos de vacaciones.
Para limpiar mis fotos, utilicé The Gimp para producir una máscara de las ubicaciones de las peores piezas de polvo:
luego usé gmic para eliminarlos de la línea de comandos:
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
Aunque esta no es una solución óptima porque esencialmente repinta esas áreas desde cero (sin usar la información de fondo), proporciona resultados satisfactorios en el cielo azul. Pensé que de esta manera, podría automatizar el proceso sobre los cientos de imágenes afectadas. Desafortunadamente, el polvo no es estacionario, por lo que esto no funciona. Se desplaza en el orden de 20 píxeles, que corresponde a unos 80 µm. No sé si esto se debe al polvo que se mueve físicamente, o si puede deberse al procesamiento de imágenes en la cámara, como la estabilización de la imagen o la corrección de la lente. He tomado algunas imágenes en bruto y JPEG, y para esas imágenes puedo ver visualmente un ligero cambio en la forma de la imagen.
Es muy sutil, pero si compara las siguientes dos imágenes, el trozo de polvo más grande y prominente se ha movido de centrado en píxel (1677, 619)
a centrado en píxel (1655, 603)
. En el otro extremo, un píxel menos prominente a la derecha se ha movido de (4919, 1485)
a (4940, 1483)
. ¿Quizás no debería ser demasiado sorprendente que los pedazos de polvo puedan y se muevan en relación al sensor?
Las fotos se toman con aproximadamente 90 minutos de diferencia. Las imágenes que publiqué están muestreadas por un factor 2.
Los datos EXIF incluyen datos de Sony Makernote, que pueden incluir información sobre estabilización de imagen, como ImageStabilization = 1
. No sé si incluye más detalles sobre la estabilización de imagen. Incluye un campo Sony_0x201f = 128 17 2 0
, que parece variar entre las imágenes, pero es idéntico entre las dos imágenes mostradas arriba, por lo que no identifica (únicamente) información para corregir la estabilización de la imagen. No sé si algún otro campo sí. Los datos exif completos (según lo informado por exiftool -v
) para una imagen muestran:
ExifToolVersion = 10.10 FileName = 08-35-11.jpg Directorio =. FileSize = 9440161 FileModifyDate = 1528067625 FileAccessDate = 1529519016 FileInodeChangeDate = 1528150970 FilePermissions = 33204 Tipo de archivo = JPEG FileTypeExtension = JPG MIMEType = image / jpeg JPEG APP1 (44908 bytes): ExifByteOrder = II + [Directorio IFD0 con 13 entradas] El | 0) ProcessingSoftware = digiKam-5.6.0 El | 1) ImageDescription = El | 2) Hacer = SONY El | 3) Modelo = ILCE-6000 El | 4) Orientación = 1 El | 5) XResolution = 350 (350/1) El | 6) Resolución Y = 350 (350/1) El | 7) ResoluciónUnidad = 2 El | 8) Software = ILCE-6000 v3.20 El | 9) ModifyDate = 2018: 05: 11 08:35:11 El | 10) YCbCrPosition = 2 El | 11) ExifOffset (SubDirectorio) -> El | + [Directorio ExifIFD con 38 entradas] El | El | 0) Tiempo de exposición = 0.003125 (1/320) El | El | 1) Número F = 11 (110/10) El | El | 2) Programa de exposición = 3 El | El | 3) ISO = 100 El | El | 4) Tipo de sensibilidad = 2 El | El | 5) RecommendedExposureIndex = 100 El | El | 6) ExifVersion = 0230 El | El | 7) DateTimeOriginal = 2018: 05: 11 08:35:11 El | El | 8) CreateDate = 2018: 05: 11 08:35:11 El | El | 9) Configuración de componentes = 1 2 3 0 El | El | 10) CompressedBitsPerPixel = 3 (3/1) El | El | 11) Valor de brillo = 10.76328125 (27554/2560) El | El | 12) Compensación de exposición = 0 (0/10) El | El | 13) MaxApertureValue = 3.6171875 (926/256) El | El | 14) MeteringMode = 5 El | El | 15) Fuente de luz = 0 El | El | 16) Flash = 16 El | El | 17) Longitud focal = 18 (180/10) El | El | 18) MakerNoteSony (SubDirectorio) -> El | El | + [Directorio MakerNotes con 94 entradas] El | El | El | 0) Sony_0x1003 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 El | El | El | 1) Sony_0x2000 = 0 El | El | El | 2) PreviewImage = El | El | El | 3) Calificación = 0 El | El | El | 4) Sony_0x2003 = El | El | El | 5) Contraste = 0 El | El | El | 6) Saturación = 0 El | El | El | 7) Nitidez = 0 El | El | El | 8) Brillo = 0 El | El | El | 9) LongExposureNoiseReduction = 1 El | El | El | 10) HighISONoiseReduction = 2 El | El | El | 11) HDR = 0 0 El | El | El | 12) Sony_0x200c = 0 0 0 El | El | El | 13) Sony_0x200d = 1 (10/10) El | El | El | 14) WBShiftAB_GM = 0 0 El | El | El | 15) ShotInfo (SubDirectorio) -> El | El | El | + [Directorio de datos binarios, 390 bytes] El | El | El | El | FaceInfoOffset = 94 El | El | El | El | SonyDateTime = 2018: 05: 11 08:35:11 El | El | El | El | SonyImageHeight = 4000 El | El | El | El | SonyImageWidth = 6000 El | El | El | El | FacesDetected = 0 El | El | El | El | FaceInfoLength = 37 El | El | El | El | MetaVersion = DC7303320222000 El | El | El | 16) CreativeStyle = Standard El | El | El | 17) Temperatura de color = 0 El | El | El | 18) ColorCompensationFilter = 0 El | El | El | 19) SceneMode = 0 El | El | El | 20) ZoneMatching = 0 El | El | El | 21) DynamicRangeOptimizer = 3 El | El | El | 22) Estabilización de imagen = 1 El | El | El | 23) ColorMode = 0 El | El | El | 24) FullImageSize = 4000 6000 El | El | El | 25) PreviewImageSize = 1080 1616 El | El | El | 26) FileFormat = 3 3 1 0 El | El | El | 27) Calidad = 2 El | El | El | 28) FlashExposureComp = 0 (0/10) El | El | El | 29) WhiteBalanceFineTune = 0 El | El | El | 30) WhiteBalance = 0 El | El | El | 31) SonyModelID = 312 El | El | El | 32) Teleconvertidor = 0 El | El | El | 33) MultiFrameNoiseReduction = 0 El | El | El | 34) PictureEffect = 0 El | El | El | 35) SoftSkinEffect = 0 El | El | El | 36) Corrección de viñetas = 2 El | El | El | 37) LateralChromaticAberration = 2 El | El | El | 38) DistortionCorrectionSetting = 0 El | El | El | 39) Sony_0x2015 = 65535 El | El | El | 40) LensType = 65535 El | El | El | 41) LensSpec = ... 5c El | El | El | 42) AutoPortraitFramed = 0 El | El | El | 43) FlashAction = 0 El | El | El | 44) Sony_0x2018 = 0 El | El | El | 45) Sony_0x2019 = 0 El | El | El | 46) Sony_0x201a = 1 El | El | El | 47) FocusMode = 2 El | El | El | 48) AFAreaModeSetting = 1 El | El | El | 49) FlexibleSpotPosition = 0 0 El | El | El | 50) AFZoneSelected = 0 El | El | El | 51) Sony_0x201f = 128 17 2 0 El | El | El | 52) AFPointsUsed = 0 0 0 0 0 0 0 0 0 0 El | El | El | 53) Sony_0x2021 = 0 El | El | El | 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 El | El | El | 55) Sony_0x2023 = 0 El | El | El | 56) Sony_0x5001 = 0 (0/1000) El | El | El | 57) Sony_0x5002 = 128 El | El | El | 58) Modo de exposición = 7 El | El | El | 59) Sony_0xb045 = 0 El | El | El | 60) Sony_0xb046 = 0 El | El | El | 61) JPEG Calidad = 65535 El | El | El | 62) FlashLevel = 0 El | El | El | 63) ReleaseMode = 0 El | El | El | 64) SequenceNumber = 0 El | El | El | 65) Anti-Blur = 2 El | El | El | 66) Sony_0xb04c = 1 (10/10) El | El | El | 67) Sony_0xb04d = 0 El | El | El | 68) DynamicRangeOptimizer = 1 El | El | El | 69) Sony_0xb050 = 65535 El | El | El | 70) Sony_0xb051 = 0 El | El | El | 71) Auto inteligente = 0 El | El | El | 72) Sony_0xb053 = 0 El | El | El | 73) WhiteBalance = 0 El | El | El | 74) Tag9400c (SubDirectorio) -> El | El | El | + [Directorio de datos binarios, 556 bytes] El | El | El | El | ReleaseMode2 = 0 El | El | El | El | ShotNumberSincePowerUp = 2 El | El | El | El | SequenceImageNumber = 0 El | El | El | El | SequenceLength = 1 El | El | El | El | SequenceFileNumber = 0 El | El | El | El | SequenceLength = 1 El | El | El | El | CameraOrientation = 1 El | El | El | El | Calidad2 = 0 El | El | El | El | SonyImageHeight = 500 El | El | El | El | ModelReleaseYear = 14 El | El | El | 75) Sony_0x9401 = ..f .... pW ..). 6Q. \. (. GG..6 \ 6.GG..6 \ 6 .. $ .......... ^. ..3..s. [Recorte] El | El | El | 76) Etiqueta9402 (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 400 bytes] El | El | El | El | Temperatura ambiente = 21 El | El | El | El | FocusMode = 2 El | El | El | El | AFAreaMode = 1 El | El | El | El | FocusPosition2 = 202 El | El | El | 77) Etiqueta9403 (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 1000 bytes] El | El | El | 78) Tag9404b (SubDirectorio) -> El | El | El | + [Directorio de datos binarios, 556 bytes] El | El | El | El | LensZoomPosition = 27 El | El | El | 79) Etiqueta9405b (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 1992 bytes] El | El | El | El | SonyISO = 4096 El | El | El | El | BaseISO = 4096 El | El | El | El | StopsAboveBaseISO = 4096 El | El | El | El | SonyExposureTime2 = 6208 El | El | El | El | Tiempo de exposición = 0.003125 El | El | El | El | SonyFNumber = 5888 El | El | El | El | SonyMaxApertureValue = 5054 El | El | El | El | SequenceImageNumber = 0 El | El | El | El | ReleaseMode2 = 0 El | El | El | El | HighISONoiseReduction = 2 El | El | El | El | LongExposureNoiseReduction = 1 El | El | El | El | PictureEffect2 = 0 El | El | El | El | Programa de exposición = 1 El | El | El | El | CreativeStyle = 0 El | El | El | El | Nitidez = 0 El | El | El | El | Distorsión Corrección = 0 El | El | El | El | LensFormat = 1 El | El | El | El | LensMount = 2 El | El | El | El | LensType2 = 32787 El | El | El | El | LensZoomPosition = 27 El | El | El | 80) Etiqueta9406 (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 64 bytes] El | El | El | El | Temperatura de la batería = 87 El | El | El | El | Nivel de batería = 55 El | El | El | 81) Sony_0x9407 = .2WW. ^ .... AT..W ..>. WSi ... lw ... W ............. T..i .... ... T .... Wl El | El | El | 82) Sony_0x9408 = i .... * ...... \ ... * ..} ...... u} .. C. = .. @. [. 8k. & ... | ...... C ^ .. pp .. [recorte] El | El | El | 83) Sony_0x9409 =. ... l. (.... I ......... `... s .......... i7. @. Sp ......> ... ..... @ .......... z ...% ...>. [recorte] El | El | El | 86) Tag940c (SubDirectorio) -> El | El | El | + [Directorio de datos binarios, 64 bytes] El | El | El | El | LensMount2 = 4 El | El | El | El | LensType3 = 32787 El | El | El | El | CameraE-mountVersion = 336 El | El | El | El | LensE-mountVersion = 263 El | El | El | El | LensFirmwareVersion = 1 El | El | El | 87) Sony_0x940d = ...... g ...... z ...? .. u ............. GO.D ..... qUx ... ? .... el .... 8 [recorte] El | El | El | 88) Tag940e (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 12288 bytes] El | El | El | 89) Sony_0xa100 = El | El | El | 90) Etiqueta2010g (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 6556 bytes] El | El | El | El | ReleaseMode2 = 0 El | El | El | El | DynamicRangeOptimizer = 1 El | El | El | El | ReleaseMode3 = 0 El | El | El | El | ReleaseMode2 = 0 El | El | El | El | FlashMode = 1 El | El | El | El | StopsAboveBaseISO = 4096 El | El | El | El | BrightnessValue = 17245 El | El | El | El | DynamicRangeOptimizer = 1 El | El | El | El | HDRSetting = 0 El | El | El | El | Compensación de exposición = 0 El | El | El | El | PictureProfile = 0 El | El | El | El | PictureProfile = 0 El | El | El | El | PictureEffect2 = 0 El | El | El | El | Calidad2 = 0 El | El | El | El | MeteringMode = 0 El | El | El | El | Programa de exposición = 1 El | El | El | El | WB_RGBLevels = 690 256 427 El | El | El | El | Longitud focal = 180 El | El | El | El | MinFocalLength = 180 El | El | El | El | MaxFocalLength = 2000 El | El | El | El | SonyISO = 4096 El | El | El | El | LensFormat = 1 El | El | El | El | LensMount = 2 El | El | El | El | LensType2 = 32787 El | El | El | 91) Sony_0x940f = liVi. $ ........) .... @ .. f ......... & .... @ ... Y @) .. Y @. @...........[recorte] El | El | El | 92) Tag9050 (Subdirectorio) -> El | El | El | + [Directorio de datos binarios, 944 bytes] El | El | El | El | FlashStatus = 64 El | El | El | El | ImageCount = 3836 El | El | El | El | SonyFNumber = 5888 El | El | El | El | ReleaseMode2 = 0 El | El | El | El | ImageCount2 = 3836 El | El | El | El | SonyDateTime2 = .... #. El | El | El | El | ReleaseMode2 = 0 El | El | El | El | InternalSerialNumber = 162254226 13 El | El | El | El | LensMount = 2 El | El | El | El | LensFormat = 1 El | El | El | El | LensType2 = 32787 El | El | El | El | LensSpecFeatures =. El | El | El | El | ImageCount3 = 44765 El | El | El | 93) Sony_0x9412 = ... @. V ........................................ ...............[recorte] El | El | 19) Comentario del usuario = El | El | 20) FlashpixVersion = 0100 El | El | 21) ColorSpace = 1 El | El | 22) ExifImageWidth = 6000 El | El | 23) ExifImageHeight = 4000 El | El | 24) InteropOffset (SubDirectory) -> El | El | + [Directorio de InteropIFD con 2 entradas] El | El | El | 0) InteropIndex = R98 El | El | El | 1) InteropVersion = 0100 El | El | 25) FileSource = 3 El | El | 26) SceneType = 1 El | El | 27) CustomRendered = 0 El | El | 28) Modo de exposición = 0 El | El | 29) WhiteBalance = 0 El | El | 30) DigitalZoomRatio = 1 (16/16) El | El | 31) FocalLengthIn35mmFormat = 27 El | El | 32) SceneCaptureType = 0 El | El | 33) Contraste = 0 El | El | 34) Saturación = 0 El | El | 35) Nitidez = 0 El | El | 36) LensInfo = 18200 3.5 6.3 (180/10 2000/10 35/10 63/10) El | El | 37) LensModel = E 18-200mm F3.5-6.3 OSS El | 12) PrintIM (SubDirectorio) -> El | + [Directorio PrintIM con 3 entradas] El | El | PrintIMVersion = 0300 El | El | 0) PrintIM_0x0002 = 1 El | El | 1) PrintIM_0x0003 = 34 El | El | 2) PrintIM_0x0101 = 0 + [Directorio IFD1 con 13 entradas] El | 0) Compresión = 6 El | 1) ImageDescription = El | 2) Hacer = SONY El | 3) Modelo = ILCE-6000 El | 4) Orientación = 1 El | 5) Resolución X = 72 (72/1) El | 6) YResolución = 72 (72/1) El | 7) ResoluciónUnidad = 2 El | 8) Software = ILCE-6000 v3.20 El | 9) ModifyDate = 2018: 05: 11 08:35:11 El | 10) ThumbnailOffset = 38476 El | 11) Longitud de miniatura = 6426 El | 12) YCbCrPosition = 2 JPEG APP1 (2825 bytes): + [Directorio XMP, 2796 bytes] El | XMPToolkit = XMP Core 4.4.0-Exiv2 El | Software = digiKam-5.6.0 El | CreatorTool = digiKam-5.6.0 El | Leyenda = Monumento Nacional Gran Cañón-Parashant, a lo largo de Clayhole Road El | Título = Monumento Nacional Gran Cañón-Parashant, a lo largo de Clayhole Road JPEG APP13 (126 bytes): + [Directorio de Photoshop, 112 bytes] El | IPTCData (SubDirectorio) -> El | + [Directorio IPTC, 99 bytes] El | El | CurrentIPTCDigest = ~ .g..z .... 3P} R .. El | El | - IPTCEnvelope record - El | El | CodedCharacterSet =.% G El | El | - Registro de aplicación IPTCA - El | El | Programa de origen = digiKam El | El | ProgramVersion = 5.6.0 El | El | ObjectName = Grand Canyon-Parashant National Monument, a lo largo de Clayhole Roa JPEG APP2 (156 bytes): + [Directorio MPF0 con 3 entradas] El | 0) MPFVersion = 0100 El | 1) NumberOfImages = 2 El | 2) MPImageList (SubDirectorio) -> El | + [Directorio de datos binarios, 16 bytes] El | El | MPImageFlags = 2684354560 El | El | MPImageFormat = 0 El | El | MPImageType = 196608 El | El | MPImageLength = 8768466 El | El | MPImageStart = 0 El | El | DependentImage1EntryNumber = 2 El | El | DependentImage2EntryNumber = 0 El | + [Directorio de datos binarios, 16 bytes] El | El | MPImageFlags = 1073741824 El | El | MPImageFormat = 0 El | El | MPImageType = 65538 El | El | MPImageLength = 664145 El | El | MPImageStart = 8724632 El | El | DependentImage1EntryNumber = 0 El | El | DependentImage2EntryNumber = 0 JPEG DQT (130 bytes): JPEG DHT (416 bytes): JPEG SOF0 (15 bytes): Ancho de imagen = 6000 ImageHeight = 4000 EncodingProcess = 0 BitsPerSample = 8 Componentes de color = 3 JPEG SOS Advertencia = [menor] Error al leer PreviewImage PreviewImage = SCALAR (0x19b5ab8)
¿Qué herramientas existen para eliminar automáticamente el polvo del sensor de una gran serie de fotos? Tengo cientos de fotos afectadas (esencialmente cualquier cosa tomada en F / 8 o menor). Es más obvio cuando la región afectada está en el cielo, por lo que una solución que funcione solo para el cielo es satisfactoria. Suponiendo que el polvo no se mueva demasiado , debería ser posible utilizar algún tipo de técnica de emparejamiento para calcular una nueva máscara para cada foto, antes de aplicarla con pintura o algún otro método. Aunque simple en teoría, implementar esto puede ser bastante laborioso en la práctica, y ni siquiera estoy seguro de si la pintura es una buena solución.
A menos que repare manualmente cada foto (toma 4 minutos de tiempo de cálculo solo en mi antiguo escritorio), qué herramientas existen para reparar toda mi serie de fotos (o al menos las tomadas a F / 8 o menos con cielo en las áreas afectadas) ?
Trabajo en Linux y mi kit de herramientas habitual consiste en digikam, darktable, gimp y Python. La cámara es una Sony A6000 (cámara de sistema compacta / sin espejo) bastante nueva. Algunas fotos se toman con una lente OSS Sony de 18–200 mm, otras con una lente manual Samyang de 12 mm.
align_image_stack
- ¡ Veré si me puede ayudar!