大量の写真からシフトするセンサーのダストのスペックルを自動的にデジタルで削除するにはどうすればよいですか?


8

砂漠にいる間にセンサーがほこりになりました。私は何週間も外出していて、旅行の終わりまでこれに気づかなかったので、センサーの汚れが付いた写真が何百枚もありました。休暇中、レンズを頻繁に交換したため、ほこりは徐々に悪化しました。休暇後、センサーを専門的に掃除してもらいましたが、新しい写真にはシミがありませんが、休暇の写真の解決策を探しています。

写真を整理するために、The Gimpを使用して、最悪のほこり片の場所のマスクを作成しました。

最悪のほこりの場所

次に、gmicを使用してコマンドラインから削除します。

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

これは基本的にそれらの領域を最初から(背景情報を使用せずに)再描画するため、最適なソリューションではありませんが、青空に満足のいく結果を提供します。この方法で、影響を受ける何百もの画像のプロセスを自動化できると考えました。残念ながら、ほこりは静止していないため、これは機能しません。約80 µmに相当する20ピクセルのオーダーでシフトします。ゴミが物理的に移動しているためなのか、手ぶれ補正やレンズ補正などのカメラ内画像処理が原因なのかはわかりません。RAWとJPEGの両方でいくつかの画像を撮影しましたが、それらの画像では、画像の形状にわずかな変化が視覚的に確認できます。

これは非常に微妙ですが、あなたは、次の2つのイメージを比較する場合、埃の最大かつ最も著名な作品は、ピクセルを中心としているから移動した(1677, 619)画素を中心とされることに(1655, 603)。反対側では、右側の目立たないピクセルがから(4919, 1485)に移動してい(4940, 1483)ます。おそらく、ほこりの破片がセンサーに対して相対的に移動し、移動することはそれほど驚くべきことではないでしょうか?

空にほこりのある画像1

空にほこりのある画像2

写真は約90分間隔で撮影されます。私が投稿した画像は、係数2でダウンサンプリングされています。

EXIFデータにはSony Makernoteデータが含まれ、これにはなどの画像安定化に関する情報が含まれる場合がありますImageStabilization = 1。画像安定化に関する詳細が含まれているかどうかはわかりません。Sony_0x201f = 128 17 2 0画像間で異なるように見えますが、上記の2つの画像間で同一のフィールドが含まれているため、画像の安定化を補正するための情報が(一意に)識別されません。他のフィールドがそうであるかどうかはわかりません。exiftool -v1つの画像の完全なexifデータ(によって報告される)は次のとおりです。

  ExifToolVersion = 10.10
  FileName = 08-35-11.jpg
  ディレクトリ=。
  FileSize = 9440161
  FileModifyDate = 1528067625
  FileAccessDate = 1529519016
  FileInodeChangeDate = 1528150970
  FilePermissions = 33204
  FileType = JPEG
  FileTypeExtension = JPG
  MIMEType = image / jpeg
JPEG APP1(44908バイト):
  ExifByteOrder = II
  + [13エントリのIFD0ディレクトリ]
  | 0)ProcessingSoftware = digiKam-5.6.0
  | 1)ImageDescription =                                
  | 2)メーカー= SONY
  | 3)モデル= ILCE-6000
  | 4)方向= 1
  | 5)XResolution = 350(350/1)
  | 6)Y解像度= 350(350/1)
  | 7)ResolutionUnit = 2
  | 8)ソフトウェア= ILCE-6000 v3.20
  | 9)ModifyDate = 2018:05:11 08:35:11
  | 10)YCbCrPositioning = 2
  | 11)ExifOffset(サブディレクトリ)->
  | + [38エントリのExifIFDディレクトリ]
  | | 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)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)LightSource = 0
  | | 16)フラッシュ= 16
  | | 17)FocalLength = 18(180/10)
  | | 18)MakerNoteSony(サブディレクトリ)->
  | | + [94エントリのMakerNotesディレクトリ]
  | | | 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)評価= 0
  | | | 4)Sony_0x2003 =
  | | | 5)コントラスト= 0
  | | | 6)彩度= 0
  | | | 7)シャープネス= 0
  | | | 8)明るさ= 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(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、390バイト]
  | | | | FaceInfoOffset = 94
  | | | | SonyDateTime = 2018:05:11 08:35:11
  | | | | SonyImageHeight = 4000
  | | | | SonyImageWidth = 6000
  | | | | FacesDetected = 0
  | | | | FaceInfoLength = 37
  | | | | MetaVersion = DC7303320222000
  | | | 16)CreativeStyle = Standard
  | | | 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)品質= 2
  | | | 28)FlashExposureComp = 0(0/10)
  | | | 29)WhiteBalanceFineTune = 0
  | | | 30)ホワイトバランス= 0
  | | | 31)SonyModelID = 312
  | | | 32)テレコンバーター= 0
  | | | 33)MultiFrameNoiseReduction = 0
  | | | 34)PictureEffect = 0
  | | | 35)SoftSkinEffect = 0
  | | | 36)VignettingCorrection = 2
  | | | 37)横方向の色収差= 2
  | | | 38)DistortionCorrectionSetting = 0
  | | | 39)ソニー_0x2015 = 65535
  | | | 40)LensType = 65535
  | | | 41)LensSpec = ... 5c
  | | | 42)AutoPortraitFramed = 0
  | | | 43)FlashAction = 0
  | | | 44)ソニー_0x2018 = 0
  | | | 45)ソニー_0x2019 = 0
  | | | 46)Sony_0x201a = 1
  | | | 47)FocusMode = 2
  | | | 48)AFAreaModeSetting = 1
  | | | 49)FlexibleSpotPosition = 0 0
  | | | 50)AFZoneSelected = 0
  | | | 51)ソニー_0x201f = 128 17 2 0
  | | | 52)AFPointsUsed = 0 0 0 0 0 0 0 0 0 0
  | | | 53)ソニー_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)ソニー_0x2023 = 0
  | | | 56)Sony_0x5001 = 0(0/1000)
  | | | 57)ソニー_0x5002 = 128
  | | | 58)ExposureMode = 7
  | | | 59)ソニー_0xb045 = 0
  | | | 60)Sony_0xb046 = 0
  | | | 61)JPEG品質= 65535
  | | | 62)FlashLevel = 0
  | | | 63)ReleaseMode = 0
  | | | 64)シーケンス番号= 0
  | | | 65)ぼけ防止= 2
  | | | 66)ソニー_0xb04c = 1(10/10)
  | | | 67)ソニー_0xb04d = 0
  | | | 68)DynamicRangeOptimizer = 1
  | | | 69)ソニー_0xb050 = 65535
  | | | 70)Sony_0xb051 = 0
  | | | 71)IntelligentAuto = 0
  | | | 72)ソニー_0xb053 = 0
  | | | 73)ホワイトバランス= 0
  | | | 74)Tag9400c(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、556バイト]
  | | | | ReleaseMode2 = 0
  | | | | ShotNumberSincePowerUp = 2
  | | | | SequenceImageNumber = 0
  | | | | SequenceLength = 1
  | | | | SequenceFileNumber = 0
  | | | | SequenceLength = 1
  | | | | CameraOrientation = 1
  | | | | 品質2 = 0
  | | | | SonyImageHeight = 500
  | | | | ModelReleaseYear = 14
  | | | 75)Sony_0x9401 = ..f .... pW ..)。6Q。\。(。GG..6 \ 6.GG..6 \ 6 .. $ .......... ^。 ..3..s。[snip]
  | | | 76)Tag9402(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、400バイト]
  | | | | AmbientTemperature = 21
  | | | | FocusMode = 2
  | | | | AFAreaMode = 1
  | | | | FocusPosition2 = 202
  | | | 77)Tag9403(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、1000バイト]
  | | | 78)Tag9404b(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、556バイト]
  | | | | LensZoomPosition = 27
  | | | 79)Tag9405b(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、1992バイト]
  | | | | 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
  | | | | シャープネス= 0
  | | | | DistortionCorrection = 0
  | | | | LensFormat = 1
  | | | | LensMount = 2
  | | | | LensType2 = 32787
  | | | | LensZoomPosition = 27
  | | | 80)Tag9406(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、64バイト]
  | | | | 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。(.... I ......... `... s .......... i7。@。Sp ......> ... ..... @ .......... z ...%...>。[snip]
  | | | 86)Tag940c(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、64バイト]
  | | | | 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(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、12288バイト]
  | | | 89)ソニー_0xa100 =
  | | | 90)Tag2010g(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、6556バイト]
  | | | | ReleaseMode2 = 0
  | | | | DynamicRangeOptimizer = 1
  | | | | ReleaseMode3 = 0
  | | | | ReleaseMode2 = 0
  | | | | FlashMode = 1
  | | | | StopsAboveBaseISO = 4096
  | | | | 輝度値= 17245
  | | | | DynamicRangeOptimizer = 1
  | | | | HDRSetting = 0
  | | | | ExposureCompensation = 0
  | | | | PictureProfile = 0
  | | | | PictureProfile = 0
  | | | | PictureEffect2 = 0
  | | | | 品質2 = 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 @。 @...........[をちょきちょきと切る]
  | | | 92)Tag9050(サブディレクトリ)->
  | | | + [BinaryDataディレクトリ、944バイト]
  | | | | 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 ........................................ ...............[をちょきちょきと切る]
  | | 19)UserComment =
  | | 20)FlashpixVersion = 0100
  | | 21)ColorSpace = 1
  | | 22)ExifImageWidth = 6000
  | | 23)ExifImageHeight = 4000
  | | 24)InteropOffset(サブディレクトリ)->
  | | + [2つのエントリを持つInteropIFDディレクトリ]
  | | | 0)InteropIndex = R98
  | | | 1)InteropVersion = 0100
  | | 25)ファイルソース= 3
  | | 26)SceneType = 1
  | | 27)CustomRendered = 0
  | | 28)ExposureMode = 0
  | | 29)ホワイトバランス= 0
  | | 30)DigitalZoomRatio = 1(16/16)
  | | 31)FocalLengthIn35mmFormat = 27
  | | 32)SceneCaptureType = 0
  | | 33)コントラスト= 0
  | | 34)彩度= 0
  | | 35)シャープネス= 0
  | | 36)LensInfo = 18200 3.5 6.3(180/10 2000/10 35/10 63/10)
  | | 37)LensModel = E 18-200mm F3.5-6.3 OSS
  | 12)PrintIM(サブディレクトリ)->
  | + [3つのエントリがあるPrintIMディレクトリ]
  | | PrintIMVersion = 0300
  | | 0)PrintIM_0x0002 = 1
  | | 1)PrintIM_0x0003 = 34
  | | 2)PrintIM_0x0101 = 0
  + [13エントリのIFD1ディレクトリ]
  | 0)圧縮= 6
  | 1)ImageDescription =                                
  | 2)メーカー= SONY
  | 3)モデル= ILCE-6000
  | 4)方向= 1
  | 5)XResolution = 72(72/1)
  | 6)Y解像度= 72(72/1)
  | 7)ResolutionUnit = 2
  | 8)ソフトウェア= ILCE-6000 v3.20
  | 9)ModifyDate = 2018:05:11 08:35:11
  | 10)ThumbnailOffset = 38476
  | 11)ThumbnailLength = 6426
  | 12)YCbCrPositioning = 2
JPEG APP1(2825バイト):
  + [XMPディレクトリ、2796バイト]
  | XMPToolkit = XMP Core 4.4.0-Exiv2
  | ソフトウェア= digiKam-5.6.0
  | CreatorTool = digiKam-5.6.0
  | キャプション=クレイホールロード沿いのグランドキャニオン-パラシャント国定公園
  | タイトル=クレイホールロード沿いのグランドキャニオン-パラシャント国定公園
JPEG APP13(126バイト):
  + [Photoshopディレクトリ、112バイト]
  | IPTCData(サブディレクトリ)->
  | + [IPTCディレクトリ、99バイト]
  | | CurrentIPTCDigest =〜.g..z .... 3P} R ..
  | | -IPTCEnvelopeレコード-
  | | CodedCharacterSet =。%G
  | | -IPTCApplicationレコード-
  | | OriginatingProgram = digiKam
  | | ProgramVersion = 5.6.0
  | | ObjectName =グランドキャニオン-パラシャント国定モニュメント、クレイホールロア沿い
JPEG APP2(156バイト):
  + [3つのエントリがあるMPF0ディレクトリ]
  | 0)MPFVersion = 0100
  | 1)NumberOfImages = 2
  | 2)MPImageList(サブディレクトリ)->
  | + [BinaryDataディレクトリ、16バイト]
  | | MPImageFlags = 2684354560
  | | MPImageFormat = 0
  | | MPImageType = 196608
  | | MPImageLength = 8768466
  | | MPImageStart = 0
  | | DependentImage1EntryNumber = 2
  | | DependentImage2EntryNumber = 0
  | + [BinaryDataディレクトリ、16バイト]
  | | MPImageFlags = 1073741824
  | | MPImageFormat = 0
  | | MPImageType = 65538
  | | MPImageLength = 664145
  | | MPImageStart = 8724632
  | | DependentImage1EntryNumber = 0
  | | DependentImage2EntryNumber = 0
JPEG DQT(130バイト):
JPEG DHT(416バイト):
JPEG SOF0(15バイト):
  ImageWidth = 6000
  ImageHeight = 4000
  EncodingProcess = 0
  BitsPerSample = 8
  ColorComponents = 3
JPEG SOS
  警告= [マイナー] PreviewImageの読み取りエラー
  PreviewImage = SCALAR(0x19b5ab8)

大量の写真からセンサーのほこりを自動的にデジタルで除去するためのツールは何ですか?影響を受けた写真を何百枚も持っています(基本的にF / 8以下で撮ったものは何でも)。影響を受ける領域が空にある場合が最も明白であるため、空に対してのみ機能するソリューションで十分です。ほこりが動かないと仮定すると、あまりにも遠く、修復またはいくつかの他の方法を使用して、それを適用する前に、それぞれの写真のための新しいマスクを計算するマッチング技術のいくつかの種類を使用することが可能でなければなりません。理論的には簡単ですが、これを実装することは実際にはかなり面倒なことかもしれません。そして、修復が適切な解決策であるかどうかさえ私にはわかりません。

各写真を手動で修復するのではなく(私の古いデスクトップでは、計算時間は4分だけです)、一連の写真全体(またはF / 8以下で撮影され、影響を受けた領域の空を撮影したもの)を修復するためのツールは何ですか? ?

私はLinuxで作業しており、私の通常のツールキットは、digikam、darktable、gimp、およびPythonで構成されています。カメラはかなり新しいソニーA6000(ミラーレス/コンパクトシステムカメラ)です。いくつかの写真は、Sony 18–200mm OSSレンズで撮られたもの、Samyang 12 mm手動レンズで撮られたものです。


1
おっと、MLの別の仕事です。
プロフィールを読んでください

1
@mattdm ML =機械学習?そうだと思います!
gerrit

3
うん。このサイトがai.stackexchange.comに統合されるときのために賭けプールを開始する時が来たと思います :)
プロフィールを読んでください

@xiota質問を編集しました。SonyA6000。休暇中に堆積し、虫眼鏡で見え、専門のセンサークリーニング後に消えたので、センサーのほこりであると私はかなり確信しています。センサーに相対して動くほこりだと思いますが、IBISについて聞いたことがありません。50〜100 µmシフトする可能性のある、センサーの前にある透明なプレートはありますか?
gerrit

@xiota私は初めてですalign_image_stack—私に役立つかどうかを確認します!
gerrit

回答:


3

現在、このようなものには技術的な解決策がありません-手動で行うか、AI / MLで裏付けされた解決策を待つ必要があると思います。

そうは言っても、このツールである程度の成功を収めることができます。

http://www.batchcrop.com/dust-spot-removal.php

49ドルかかります。


2
最終的に手動で(darktableを使用して)実行しましたが、時間がかかりましたが、多くの休暇の写真をよく詳細に確認しました。
gerrit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.