Dlaczego ten portret nie jest ostry na f / 29?


25

Jestem zdezorientowany, dlaczego ten obraz nie jest ostry. To zdjęcie portretowe wykonane przy F / 29 ISO100 1/250 z obiektywem 17–85 mm ustawionym na 38 mm. Odległość obiektu wynosiła 1,2 mln. Moja aplikacja DOF mówi mi, że mój DOF powinien wynosić ~ 82,98 cm lub około 1M.

Jestem zdezorientowany, dlaczego ten obraz nie jest tak ostry, jak powinien. Dla tego zrzutu ekranu powiększyłem go do 200%. Czy to rozmycie przy 200% normalności?

EDYCJA: Niektóre osoby mają pytania dotyczące DOF na tym zdjęciu, więc oto informacje, które można uzyskać z dowolnego internetowego kalkulatora DOF. Moje oszacowanie 82,8 cm pochodziło z aplikacji, a 1,2 mln pochodziło z informacji EXIF, przy użyciu tego narzędzia online DOF na F28 wyniósłby:

 Subject distance   1.2 m

 **Depth of field** 
 Near limit     0.84 m
 Far limit      2.13 m
 Total          1.29 m

 In front of subject        0.36 m  (28%)
 Behind subject             0.93 m  (72%)

 Hyperfocal distance         2.7 m
 Circle of confusion       0.019 mm

Jest to również poprawne, ponieważ tak naprawdę byłem daleko od aparatu - 1,2 mln. Aby to zdjęcie było nieostre, musiałbym być w odległości około pół metra od aparatu, czego nie pamiętam. Możliwe, że rozmycie zaobserwowane na tym zdjęciu nie jest spowodowane brakiem ostrości obiektu.

portret F / 29 ISO100 1/250


6
dyfrakcja odgrywa rolę na tym otworze
null

7
Zdecydowanie powiązane, jeśli nie całkiem duplikat: Co to jest „granica dyfrakcji”? .
Philip Kendall

1
Czy obiektyw był ustawiony na 38 mm czy 38 cm? mm wydaje się mało prawdopodobne.
mattdm,

9
Nigdzie w opisie ustawień nie powiedziałeś, na jaką odległość ustawiono obiektyw. Pamiętaj, że nie ma to nic wspólnego z ogniskową ustawioną dla twojego obiektywu zmiennoogniskowego. Możliwe, że obiektyw był zogniskowany na nieskończoności, o ile wiemy. OK, może nie nieskończoność, ale po prostu brak ostrości jest prawdopodobnym kandydatem.
osullic

2
„Koncentruje się na” i „ogniskowa” to dwie różne koncepcje. Więcej tutaj .
mattdm,

Odpowiedzi:


48

Jak wspomniano w innych odpowiedziach, dyfrakcja doprowadziła do nieostrości. Aby to sprawdzić, można spróbować wyostrzyć obraz za pomocą dekonwolucji, używając funkcji rozproszenia punktów odpowiadającej F / 29. W przypadku dyfrakcji mamy (do ogólnej normalizacji)

P (s) = {J 1rs / ( λF )] / [π rs / ( λF )]} 2

gdzie J 1 jest funkcją Bessela pierwszego rodzaju rzędu 1 ,
s jest odległością na obrazie mierzoną w pikselach,
r jest wielkością jednego piksela (zwykle około 4,2 * 10 ^ (- 6) metrów dla czujników uprawy),
λ jest długością fali światła, a
F liczbą F, w tym przypadku 29.

Odnosi się to do światła monochromatycznego, aby przybliżyć przybliżoną funkcję rozproszenia punktów dla kanałów kolorów, którą możemy uśrednić dla pewnego odpowiedniego zakresu długości fal. Ponadto należy zintegrować P (s) na obszarze piksela określonym przez s.

Jeśli w ten sposób skompilujemy 3-punktowe funkcje rozproszenia dla 3 kanałów kolorów, możemy wyostrzyć obraz, przekształcając go w liniową przestrzeń kolorów i stosując algorytm dekonwolucji, a następnie przekształcając z powrotem do sRGB. Mam następujący wynik:

Wyostrzone zdjęcie

Tak więc twarz została znacznie wyostrzona przy użyciu tylko danych o liczbie F i założenia o wielkości piksela. Artefakty paskowania są widoczne w ciemnej części obrazu, wynika to z posteryzacji po przekształceniu z powrotem do sRGB.

Zgodnie z życzeniem dodam więcej szczegółów na temat używanych programów. Użyłem ImageJ i ImageMagick , użyłem również Mathematica do obliczenia funkcji rozproszenia punktów, ale można to również zrobić w ImageJ. Zacznę od wyjaśnienia, w jaki sposób dokonuję dekonwolucji za pomocą ImageJ, kiedy mam już funkcję rozpraszania punktów. Aby wykonać dekonwolucję, musisz zainstalować wtyczkę do ImageJ, użyłem tej wtyczki w tym przypadku, ale dostępne są również inne wtyczki, np . Wtyczka DeconvolutionLab .

Najpierw musisz przekonwertować na liniową przestrzeń kolorów, użyłem ImageMagick, aby przekonwertować nieostry obraz (input.jpg) na liniową przestrzeń kolorów za pomocą polecenia:

convert input.jpg -colorspace RGB output.tif

Następnie za pomocą ImageJ otworzysz plik output.tif. Następnie z opcji menu wybierz „obraz”, następnie „kolor”, a następnie „Kanały pluć”. Następnie z menu wybierz „wtyczki”, a następnie „równoległą iteracyjną dekonwolucję”, a następnie 2d dekonwolucję pośrednią ”.

Następnie pojawia się okno dekonwolucji, następnie wybierasz obraz, a „PSF” oznacza funkcję rozkładania punktów, tam wybierasz plik obrazu, który zawiera funkcję rozkładu punktów. Jako metodę wybrałem „WPL” opartą na filtrze Wienera, który zwykle działa dość dobrze w przypadku obrazów o niskim poziomie szumów. W opcjach WPL zaznacz „normalizuj PSF”, a dla filtra dolnoprzepustowego zmień wartość na 0,2, domyślnie jest to 1, ale niższa wartość jest lepsza dla obrazów o niskim poziomie szumów (jeśli wybierzesz większy, to „ Otrzymasz obraz, który jest mniej ostry). Pozostałe opcje, Granica, mogą być wybrane jako refleksyjne, zmiana rozmiaru może być ustawiona na „następną moc 2”, wyjście może być ustawione na 32 bity, precyzja może być ustawiona na podwojoną wartość. Wybrałem maksymalną liczbę iteracji na 15,

Następnie uruchom program, klikając „dekonwoluj”. Otrzymasz 32-bitowy plik obrazu jako wynik. Zwykle wartości w pikselach są dość podobne do tych, które były na oryginalnym obrazie, ale niektóre piksele mogą przekraczać maksimum dla oryginalnego formatu obrazu. Tak więc w tym przypadku zaczęliśmy od obrazów 8-bitowych, ale na obrazie rozkręconym możesz mieć wartości szare przekraczające 255, co powoduje, że cały obraz staje się zbyt ciemny. Należy to naprawić, przycinając te piksele do 255, co można zrobić, wybierając w menu „proces”, a następnie „Matematyka”, a następnie „Max”. Wartość maksymalna zostanie następnie wykorzystana do przycięcia szarych wartości, które przekraczają tę wartość. Pamiętaj, że zostanie to zrobione z obrazem, który ostatnio klikałeś. Możesz również zobaczyć, który plik jest „bieżącym plikiem”, wybierając „

Następnie po rozłożeniu trzech składników kolorów można je połączyć, wybierając w menu „obraz”, następnie „kolor”, a następnie „Scal kanały”. Następnie otrzymujesz złożony obraz, który możesz przekonwertować na 8-bitowy RGB za pomocą polecenia „Stack to RGB”, które tam znajdziesz.

Następnie zapisz ten obraz, nazwijmy go im.tif. Na koniec musisz przekonwertować to na sRGB, możesz to zrobić za pomocą ImageMagick za pomocą polecenia:

convert im.tif -set colorspace RGB -colorspace sRGB output.tif

Pozostaje pytanie, jak uzyskać funkcję rozkładania punktów. W praktyce, gdybyś zrobił zdjęcie takie jak omawiane tutaj, mógłbyś po prostu zrobić zdjęcie źródła punktowego, np. Gwiazdy o F / 29 i użyć go jako funkcji rozrzutu punktów. Alternatywnie można spojrzeć na granice o wysokim kontraście i wyodrębnić funkcję rozproszenia punktów ze sposobu, w jaki wartości szarości zmieniają się z jednej wartości na drugą w poprzek granicy. Ale wtedy próbujesz wyostrzyć obraz najlepiej, jak potrafisz.

W tym przypadku celem było skompilowanie funkcji rozproszenia punktów dla kanału kolorów w oparciu o to, czego można oczekiwać dla F / 29, dekonwolować obraz i sprawdzić, czy wynik wygląda na wystarczająco poprawiony. Użyłem Mathematiki do wykonania obliczeń, a który z tak zaawansowanego programu algebry komputerowej jest dość łatwy do wykonywania wszelkiego rodzaju manipulacji, w tym uśredniania dla przedziału długości fali i całkowania na obszarach pikseli, aby uczynić PSF bardziej realistycznym.

Ale ImageJ pozwala również utworzyć nowy obraz, którego można użyć jako funkcji rozrzucania punktów. Jeśli klikniesz „Plik”, a następnie „Nowy”, możesz utworzyć 32-bitowy obraz o rozmiarze, powiedzmy, 64 na 64 wypełniony czarnym kolorem. Następnie można zaprogramować formułę wartości szarości, wybierając „proces”, następnie „Matematyka”, a następnie „Makro”. Aby uzyskać funkcję rozproszenia punktów dla tego przypadku, która obejmuje tutaj funkcję Bessela, możesz użyć faktu, że jest ona dobrze opisana przez kilka pierwszych terminów rozszerzenia serii. Strona MathWorld, do której odsyłam, daje rozszerzenia tej serii, więc J 1 (x) 2 / x 2 z x = π rs / ( λF ) można zastąpić funkcją w postaci A + B s 2 + C s 4. To przybliżenie stanie się nieważne, jeśli s jest zbyt duży. Teraz wiemy, że PSF dąży do zera, np. W odległości około 5 lub 6 pikseli można go ustawić na zero. Zakładając, że wielomian jest wciąż mały przy tych wartościach, możesz napisać Makro jako:

if(d<7) v = A + B  * pow(d,2) +  B * pow(d,4)

Następnie tworzysz 3 obrazy dla, powiedzmy, lambda = 650 nm, 500 nm i 400 nm lub dowolnych innych wartości, które Twoim zdaniem są odpowiednie do przedstawienia dyfrakcji w 3 kanałach kolorów. Następnie możesz wykonać uśrednianie dla kilku różnych długości fali, tworząc zdjęcia dla różnych lambda, a następnie wybierając „proces”, a następnie „kalkulator obrazu” i tam wybierz „dodaj”. Następnie możesz dodać kolejny obraz do tego wyniku, a po zakończeniu dodawania możesz podzielić, aby uzyskać średnią, wybierając „proces”, następnie „matematyka”, a następnie „dziel”.


To trochę niesamowite. Zastanawiam się, ile czasu minie, zanim kamery będą miały wbudowaną funkcję arsenału automatycznej korekty, a tego rodzaju rzeczy zastosuje się oczywiście.
mattdm,

2
+10 (ale tak naprawdę nie można zrobić +10) za dodanie matematyki. Wspaniale, że go dodałeś. Czy możesz podać za to jakieś uzasadnienie. Chcę tego spróbować sam. Im bardziej szczegółowa matematyka, tym lepiej!
Zepsuty MyStack,

To naprawdę zadziwiające. W jakim oprogramowaniu to zrobiłeś? Wydaje się, że może to być niezwykle przydatne w fotografii makro.
Whelkaholism

@mattdm Dekonwolucja wymaga dość mocy obliczeniowej, ale niektóre algorytmy, takie jak dekonwolucja Richardsona – Lucy, można łatwiej zaimplementować w sprzęcie niż inne. Ponadto oprogramowanie aparatu, które jest używane do przetwarzania nieprzetworzonych plików na komputerach, może obejmować dekonwolucję, która jest specjalnie zoptymalizowana do radzenia sobie z rzeczywistym rozmyciem uzyskanym w wyniku rozmycia i dyfrakcji.
Hrabia Iblis,

1
@CorruptMyStack W odpowiedzi dodam więcej szczegółów. Powinieneś być w stanie wykonać znacznie lepszą pracę, jeśli masz plik raw. Możesz sprawdzić rozmiar czujnika i na tej podstawie obliczyć rozmiar w pikselach. Ale możesz także pominąć obliczenia i bezpośrednio zmierzyć funkcję rozproszenia punktów, robiąc zdjęcia jakiegoś obiektu podobnego do punktu, a następnie po prostu wyodrębnij z niej funkcję rozpraszania punktów. W przypadku dyfrakcji najlepiej jest dekonwolucja z plikami surowymi, w przeciwieństwie do innych przypadków, masz teraz prążki kolorów, których nie należy korygować przed przeprowadzeniem dekonwolucji.
Hrabia Iblis,

51

Musisz przejechać granicy dyfrakcji . Promienie świetlne przechodzące przez małą dziurę będą się rozchodzić i zakłócać, a następnie pojawi się wzór - rodzaj pasma, w którym różne częstotliwości / rozmieszczenie mogą powodować, że oddzielne promienie sumują się lub negują. Im mniejszy jest otwór, tym większa staje się ta dywergencja / interferencja. Ten wzór nazywa się dyskiem Airy. Kiedy średnica piku dysku Airy staje się większa niż rozmiar piksela, a dyski Airy dla każdego piksela zaczynają się łączyć, uzyskuje się miękkość - im wyższa liczba pikseli czujnika i im mniejszy czujnik, tym szybciej Zobaczę jak zatrzymasz się.

Na ogół jesteś ostrzejszy w „szczęśliwym medium”. Miejsce, w którym może znajdować się „szczęśliwy nośnik” Twojego sprzętu, zmieni się w zależności od gęstości / wielkości pikseli i konstrukcji obiektywu. Dzięki czujnikom wielkości APS-C, które sprytnie wykrywam, że używasz z referencyjnego obiektywu 17-85, prawdopodobnie nie chcesz przekraczać f / 11 bez naprawdę dobrego powodu i chęci rezygnacji z pewnej ostrości. Teoretyczne granice dyfrakcji będą prawdopodobnie w zakresie f / 5.6-f / 8. Będziesz także chciał dowiedzieć się, gdzie znajduje się „słaby punkt” twojego obiektywu - wiele obiektywów działa lepiej w pozycji zatrzymanej 1-2 stopnie od szerokiego otwarcia. Na przykład „słaby punkt” obiektywu EF 50 mm f / 1.8 II mieści się w zakresie f / 4–5,6.

Powiedziałbym również, że ocena ostrości przy powiększeniu 200% wymaga jedynie, aby wszystkie soczewki wyglądały jak mięso psa. To nie jest realistyczne powiększenie pod względem odległości oglądania, jakie można uzyskać od typowego wydruku, i jest to rzadki obiektyw, który wytrzyma ten rodzaj testu, nawet jeśli zostanie użyty w najsłodszym miejscu. Zatrzymaj podglądanie pikseli. Zacznij patrzeć na wydruk.

Zobacz także: http://www.cambridgeincolour.com/tutorials/diffraction-photography.htm


Lub, jeśli oceniasz, jak może wyglądać wydruk, to: powiększ obraz tak, aby pojawiał się na ekranie mniej więcej w tym samym rozmiarze, co na wydruku, i spójrz na ekran z mniej więcej tej samej odległości, co wydrukować. To da ci znacznie lepsze wyobrażenie o tym, jak będzie wyglądał końcowy wynik, nawet jeśli nie jest to idealna metoda. @CorruptMyStack
CVn

15

Z powodu dyfrakcji. f / 29 to zdecydowanie za dużo, aby oczekiwać ostrego obrazu. Spróbuj zrobić to samo na f / 8, a zobaczysz różnicę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.