====== Hardware: Jak działa autofocus? ====== narzędzia wykorzystane: * https://phydemo.app/ray-optics/simulator/ * https://imagej.net/ij/ ====== Wyostrzanie poprzez pomiar odległości (aktywne) ====== {{ :notatki:autofocus1.svg |}} $$ \frac{1}{f} = \frac{1}{o} + \frac{1}{i} $$ Gdzie: * $f$ — ogniskowa soczewki (w metrach lub centymetrach), * $o$ — odległość przedmiotu od soczewki, * $i$ — odległość obrazu od soczewki. ====== Wyostrzanie poprzez wykrycie Fazy (pasywne) ====== ===== Sytuacja w której obraz jest wyostrzony na matrycy ===== {{.:pasted:20250521-192149.png?700}}
Linear sensor pixels
Linear sensor pixels
Ray of light A
Ray of lig...
Ray of light A
Ray of lig...
===== Sytuacja w której obraz jest wyostrzony za matrycą ===== {{.:pasted:20250521-192229.png?700}}
Linear sensor pixels
Linear sensor pixels
Ray of light A
Ray of lig...
Ray of light A
Ray of lig...
===== Sytuacja kiedy obraz jest wyostrzony przed matrycą ===== {{.:pasted:20250521-192317.png?700}}
Linear sensor pixels
Linear sensor pixels
Ray of light A
Ray of lig...
Ray of light A
Ray of lig...
====== Wyostrzanie poprzez kontrast (pasywne) ====== Skrypt w pythonie obliczający sumę wszystkich różnic pomiędzy parami pikseli w obrazku. from PIL import Image def main(): img = Image.open("greyscale.png").convert("L") pixels = list(img.getdata()) n = len(pixels) total = 0 for i in range(n): pi = pixels[i] for j in range(i + 1, n): total += abs(pi - pixels[j]) print(f"Pixels read: {n}") print(f"Sum of abs diffs over all pairs: {total}") if __name__ == "__main__": main() ===== Wyniki dla obrazka wyostrzonego ===== {{.:pasted:20250521-204417.png}} Pixels read: 11970 Sum of abs diffs over all pairs: 4496510654 ===== Wyniki dla obrazka niewyostrzonego ===== {{.:pasted:20250521-204252.png}} Pixels read: 11970 Sum of abs diffs over all pairs: 3223391491 ===== Źródła ===== {{youtube>B-TOUPXytw4?}}