{"id":10267,"date":"2026-08-15T00:56:42","date_gmt":"2026-08-14T22:56:42","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/"},"modified":"2026-08-15T00:56:42","modified_gmt":"2026-08-14T22:56:42","slug":"cctv-lens-fov-pixel-density-calculator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/","title":{"rendered":"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Sama rozdzielczo\u015b\u0107 nic nie m\u00f3wi: kamera 8 MP z szerokim obiektywem nie zidentyfikuje nikogo na pi\u0119tnastu metrach, a kamera 2 MP z w\u0142a\u015bciwym obiektywem owszem. Licz\u0105 si\u0119 piksele na metr w istotnej odleg\u0142o\u015bci i w\u0142a\u015bnie to wylicza to narz\u0119dzie.<\/p>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 180px;\">\n            <label for=\"cc-format\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Format matrycy<\/label><br \/>\n            <select id=\"cc-format\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\"><option value=\"3.6\">1\/4&quot;<\/option><option value=\"4.8\">1\/3&quot;<\/option><option value=\"5.0\">1\/2.9&quot;<\/option><option value=\"5.4\" selected>1\/2.7&quot;<\/option><option value=\"6.4\">1\/2&quot;<\/option><option value=\"7.2\">1\/1.8&quot;<\/option><option value=\"eigen\">w\u0142asna warto\u015b\u0107<\/option><\/select>\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"cc-sensor\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Szeroko\u015b\u0107 matrycy (mm)<\/label><br \/>\n            <input type=\"text\" id=\"cc-sensor\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"5.4\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"cc-brennweite\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Ogniskowa (mm)<\/label><br \/>\n            <input type=\"text\" id=\"cc-brennweite\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"4\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"cc-abstand\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Odleg\u0142o\u015b\u0107 do sceny (m)<\/label><br \/>\n            <input type=\"text\" id=\"cc-abstand\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"12\">\n        <\/div>\n<\/p><\/div>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap; margin-top: 12px;\">\n<div style=\"flex: 1; min-width: 190px;\">\n            <label for=\"cc-aufloesung\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Rozdzielczo\u015b\u0107<\/label><br \/>\n            <select id=\"cc-aufloesung\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\"><option value=\"1280x720\">1280 x 720 (1 MP)<\/option><option value=\"1920x1080\" selected>1920 x 1080 (2 MP)<\/option><option value=\"2560x1440\">2560 x 1440 (4 MP)<\/option><option value=\"2688x1520\">2688 x 1520 (4 MP)<\/option><option value=\"3072x1728\">3072 x 1728 (5 MP)<\/option><option value=\"3840x2160\">3840 x 2160 (8 MP)<\/option><\/select>\n        <\/div>\n<div style=\"flex: 1; min-width: 190px;\">\n            <label for=\"cc-ziel\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Poziom docelowy<\/label><br \/>\n            <select id=\"cc-ziel\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\"><option value=\"25\">Detect (25 px\/m)<\/option><option value=\"62.5\">Observe (62,5 px\/m)<\/option><option value=\"125\">Recognise (125 px\/m)<\/option><option value=\"250\" selected>Identify (250 px\/m)<\/option><\/select>\n        <\/div>\n<\/p><\/div>\n<div style=\"display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0 0;\">\n        <button id=\"cc-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: #0b1114; border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Przelicz<\/button>\n    <\/div>\n<div id=\"cc-ergebnis\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Sama rozdzielczo\u015b\u0107 nic nie m\u00f3wi: kamera 8 MP z szerokim obiektywem nie zidentyfikuje nikogo na pi\u0119tnastu metrach, a kamera 2 MP z w\u0142a\u015bciwym obiektywem owszem. Licz\u0105 si\u0119 piksele na metr w istotnej odleg\u0142o\u015bci i w\u0142a\u015bnie to wylicza to narz\u0119dzie.\",\"label_format\":\"Format matrycy\",\"format_eigen\":\"w\u0142asna warto\u015b\u0107\",\"label_sensor\":\"Szeroko\u015b\u0107 matrycy (mm)\",\"label_brennweite\":\"Ogniskowa (mm)\",\"label_abstand\":\"Odleg\u0142o\u015b\u0107 do sceny (m)\",\"label_aufloesung\":\"Rozdzielczo\u015b\u0107\",\"label_ziel\":\"Poziom docelowy\",\"ziel_detect\":\"Detect (25 px\\\/m)\",\"ziel_observe\":\"Observe (62,5 px\\\/m)\",\"ziel_recognise\":\"Recognise (125 px\\\/m)\",\"ziel_identify\":\"Identify (250 px\\\/m)\",\"knopf\":\"Przelicz\",\"fehler_sensor\":\"Szeroko\u015b\u0107 matrycy musi by\u0107 liczb\u0105 wi\u0119ksz\u0105 od zera.\",\"fehler_brennweite\":\"Ogniskowa musi by\u0107 liczb\u0105 wi\u0119ksz\u0105 od zera.\",\"fehler_abstand\":\"Odleg\u0142o\u015b\u0107 musi by\u0107 liczb\u0105 wi\u0119ksz\u0105 od zera.\",\"fehler_aufloesung\":\"Nie uda\u0142o si\u0119 odczyta\u0107 rozdzielczo\u015bci.\",\"h_bild\":\"W tej odleg\u0142o\u015bci\",\"h_stufen\":\"Jak daleko si\u0119ga ka\u017cdy poziom\",\"h_empfehlung\":\"Obiektyw dla poziomu docelowego\",\"h_befunde\":\"Ustalenia\",\"z_winkel_h\":\"Poziomy k\u0105t widzenia\",\"z_winkel_v\":\"Pionowy k\u0105t widzenia\",\"z_breite\":\"Szeroko\u015b\u0107 sceny\",\"z_hoehe\":\"Wysoko\u015b\u0107 sceny\",\"z_dichte\":\"G\u0119sto\u015b\u0107 pikseli\",\"z_stufe\":\"Osi\u0105gni\u0119ty poziom\",\"z_keine_stufe\":\"poni\u017cej Detect\",\"z_reichweite\":\"do %s m\",\"z_zielbrennweite\":\"Wymagana ogniskowa\",\"stufen_erklaerung\":\"Cztery poziomy pochodz\u0105 z EN 62676-4. Powy\u017cej podanej odleg\u0142o\u015bci kamera spada poni\u017cej danego poziomu.\",\"empfehlung_erklaerung\":\"To ogniskowa, przy kt\u00f3rej wybrany poziom zostaje osi\u0105gni\u0119ty dok\u0142adnie w tej odleg\u0142o\u015bci. Wszystko d\u0142u\u017csze jeszcze bardziej zaw\u0119\u017ca pole widzenia.\",\"b_unter_detect\":\"Przy %s px\\\/m kamera pozostaje poni\u017cej najni\u017cszego poziomu. Co\u015b si\u0119 w obrazie porusza i tyle.\",\"b_ziel_verfehlt\":\"%d px\\\/m nie wystarcza do %z px\\\/m poziomu docelowego. Ogniskowa oko\u0142o %b mm by wystarczy\u0142a, kosztem w\u0119\u017cszego pola widzenia.\",\"b_ziel_erreicht\":\"Poziom docelowy %z px\\\/m zostaje w tej odleg\u0142o\u015bci osi\u0105gni\u0119ty.\",\"b_weitwinkel\":\"K\u0105t %s stopni jest na tyle szeroki, \u017ce wida\u0107 dystorsj\u0119, a brzegi trac\u0105 wyra\u017anie wi\u0119cej szczeg\u00f3\u0142\u00f3w ni\u017c \u015brodek.\",\"b_tele\":\"Przy %s stopniach to w\u0105ski kadr. Dobrze rozdziela, ale ma\u0142o obejmuje, doj\u015bcie musi pokrywa\u0107 druga kamera.\",\"b_schmal\":\"Scena ma tylko %s m szeroko\u015bci, mniej wi\u0119cej tyle co drzwi. Przy wej\u015bciu to w\u0142a\u015bciwe, przy podje\u017adzie nie.\",\"b_waagerecht\":\"G\u0119sto\u015b\u0107 pikseli liczy si\u0119 poziomo. Twarz obr\u00f3cona bokiem albo tablica pod k\u0105tem niesie mniej pikseli, ni\u017c sugeruje liczba.\",\"b_licht\":\"Wyliczenie zak\u0142ada czysty obraz. Noc\u0105, przy podczerwieni, silnej kompresji albo szerokim zakresie dynamiki u\u017cyteczny szczeg\u00f3\u0142 jest wyra\u017anie ni\u017cszy.\"};<\/p>\n<p>    \/\/ --- reine Rechenlogik ---<\/p>\n<p>    \/\/ Die Stufen stammen aus EN 62676-4 und sind in Pixel je Meter angegeben.\n    const STUFEN = [\n        { name: 'Detect', dichte: 25 },\n        { name: 'Observe', dichte: 62.5 },\n        { name: 'Recognise', dichte: 125 },\n        { name: 'Identify', dichte: 250 }\n    ];<\/p>\n<p>    function zahl(wert) {\n        const roh = String(wert === undefined || wert === null ? '' : wert).trim().replace(',', '.');\n        if (roh === '') { return NaN; }\n        if (!\/^[0-9]+(\\.[0-9]+)?$\/.test(roh)) { return NaN; }\n        return parseFloat(roh);\n    }<\/p>\n<p>    function runde(wert, stellen) {\n        const faktor = Math.pow(10, stellen === undefined ? 0 : stellen);\n        return Math.round(wert * faktor) \/ faktor;\n    }<\/p>\n<p>    function rechnen(e) {\n        const ergebnis = { ok: false, fehler: '', stufen: [], befunde: [] };\n        const eingabe = e || {};<\/p>\n<p>        const sensor = zahl(eingabe.sensor);\n        const brennweite = zahl(eingabe.brennweite);\n        const abstand = zahl(eingabe.abstand);\n        const ziel = zahl(eingabe.ziel);<\/p>\n<p>        if (!isFinite(sensor) || sensor <= 0) { ergebnis.fehler = T.fehler_sensor; return ergebnis; }\n        if (!isFinite(brennweite) || brennweite <= 0) { ergebnis.fehler = T.fehler_brennweite; return ergebnis; }\n        if (!isFinite(abstand) || abstand <= 0) { ergebnis.fehler = T.fehler_abstand; return ergebnis; }\n\n        const teile = String(eingabe.aufloesung || '1920x1080').split('x');\n        const breitePixel = parseInt(teile[0], 10);\n        const hoehePixel = parseInt(teile[1], 10);\n        if (!isFinite(breitePixel) || !isFinite(hoehePixel) || breitePixel <= 0) {\n            ergebnis.fehler = T.fehler_aufloesung;\n            return ergebnis;\n        }\n\n        \/\/ Bei der duennen Linse gilt Bildbreite zu Abstand wie Sensorbreite zu\n        \/\/ Brennweite. Der Bildwinkel folgt daraus.\n        const sensorHoehe = sensor * hoehePixel \/ breitePixel;\n        const breite = abstand * sensor \/ brennweite;\n        const hoehe = abstand * sensorHoehe \/ brennweite;\n        const winkelH = 2 * Math.atan(sensor \/ (2 * brennweite)) * 180 \/ Math.PI;\n        const winkelV = 2 * Math.atan(sensorHoehe \/ (2 * brennweite)) * 180 \/ Math.PI;\n        const dichte = breitePixel \/ breite;\n\n        ergebnis.breite = runde(breite, 2);\n        ergebnis.hoehe = runde(hoehe, 2);\n        ergebnis.winkelH = runde(winkelH, 1);\n        ergebnis.winkelV = runde(winkelV, 1);\n        ergebnis.dichte = runde(dichte, 1);\n        ergebnis.breitePixel = breitePixel;\n        ergebnis.hoehePixel = hoehePixel;\n\n        \/\/ Wie weit reicht jede Stufe?\n        STUFEN.forEach(function (stufe) {\n            const weite = breitePixel * brennweite \/ (sensor * stufe.dichte);\n            ergebnis.stufen.push({\n                name: stufe.name,\n                dichte: stufe.dichte,\n                weite: runde(weite, 1),\n                erreicht: dichte >= stufe.dichte\n            });\n        });<\/p>\n<p>        \/\/ Welche Stufe wird am gewaehlten Abstand erreicht?\n        let erreicht = null;\n        ergebnis.stufen.forEach(function (s) { if (s.erreicht) { erreicht = s.name; } });\n        ergebnis.erreicht = erreicht;<\/p>\n<p>        \/\/ Welche Brennweite braeuchte es fuer das Ziel?\n        if (isFinite(ziel) && ziel > 0) {\n            ergebnis.ziel = ziel;\n            ergebnis.zielBrennweite = runde(ziel * sensor * abstand \/ breitePixel, 1);\n            ergebnis.zielErreicht = dichte >= ziel;\n        }<\/p>\n<p>        \/\/ --- Befunde ---\n        if (!erreicht) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_unter_detect.replace('%s', String(ergebnis.dichte)) });\n        }\n        if (ergebnis.ziel && !ergebnis.zielErreicht) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_ziel_verfehlt.replace('%d', String(ergebnis.dichte)).replace('%z', String(ziel)).replace('%b', String(ergebnis.zielBrennweite)) });\n        }\n        if (ergebnis.ziel && ergebnis.zielErreicht) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_ziel_erreicht.replace('%z', String(ziel)) });\n        }\n        if (winkelH > 100) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_weitwinkel.replace('%s', String(ergebnis.winkelH)) });\n        }\n        if (winkelH < 20) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_tele.replace('%s', String(ergebnis.winkelH)) });\n        }\n        if (breite < 2) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_schmal.replace('%s', String(ergebnis.breite)) });\n        }\n        ergebnis.befunde.push({ schwer: false, text: T.b_waagerecht });\n        ergebnis.befunde.push({ schwer: false, text: T.b_licht });\n\n        ergebnis.ok = true;\n        return ergebnis;\n    }\n\n    if (typeof window !== 'undefined') {\n        window.LW_TEST = window.LW_TEST || {};\n        window.LW_TEST.CC = { rechnen: rechnen, zahl: zahl, STUFEN: STUFEN };\n    }\n\n    \/\/ --- Anbindung an das Dokument ---\n\n    const btn = document.getElementById('cc-btn');\n    const out = document.getElementById('cc-ergebnis');\n    const formatFeld = document.getElementById('cc-format');\n    const sensorFeld = document.getElementById('cc-sensor');\n    if (!btn || !out || !formatFeld || !sensorFeld) { return; }\n\n    const KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 14px; margin-bottom: 18px;';\n    const UEBERSCHRIFT = 'color: var(--text-primary, #e8e8ee); font-weight: 700; margin-bottom: 8px;';\n\n    function el(tag, css, inhalt) {\n        const knoten = document.createElement(tag);\n        if (css) { knoten.setAttribute('style', css); }\n        if (inhalt !== undefined &#038;&#038; inhalt !== null) { knoten.textContent = inhalt; }\n        return knoten;\n    }\n\n    function wert(id) {\n        const knoten = document.getElementById(id);\n        return knoten ? knoten.value : '';\n    }\n\n    function zeile(kasten, name, inhalt, hervor) {\n        const z = el('div', 'display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 5px 0;');\n        z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0);', name));\n        z.appendChild(el('span', 'color: ' + (hervor ? 'var(--accent, #7ee787)' : 'var(--text-primary, #e8e8ee)') + '; font-family: monospace;', inhalt));\n        kasten.appendChild(z);\n    }\n\n    formatFeld.addEventListener('change', function () {\n        if (formatFeld.value !== 'eigen') { sensorFeld.value = formatFeld.value; }\n    });\n\n    btn.addEventListener('click', function () {\n        const erg = rechnen({\n            sensor: sensorFeld.value,\n            brennweite: wert('cc-brennweite'),\n            abstand: wert('cc-abstand'),\n            aufloesung: wert('cc-aufloesung'),\n            ziel: wert('cc-ziel')\n        });\n\n        out.textContent = '';\n        if (!erg.ok) {\n            out.appendChild(el('div', 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-left: 3px solid #ffb86c; color: var(--text-secondary, #a0a0b0); padding: 14px; border-radius: 6px;', erg.fehler));\n            return;\n        }\n\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_bild));\n        const kasten = el('div', KASTEN);\n        zeile(kasten, T.z_winkel_h, erg.winkelH + ' Grad');\n        zeile(kasten, T.z_winkel_v, erg.winkelV + ' Grad');\n        zeile(kasten, T.z_breite, erg.breite + ' m');\n        zeile(kasten, T.z_hoehe, erg.hoehe + ' m');\n        zeile(kasten, T.z_dichte, erg.dichte + ' px\/m', true);\n        zeile(kasten, T.z_stufe, erg.erreicht ? erg.erreicht : T.z_keine_stufe, !!erg.erreicht);\n        out.appendChild(kasten);\n\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_stufen));\n        out.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.85rem; margin-bottom: 10px;', T.stufen_erklaerung));\n        const tabelle = el('div', KASTEN);\n        erg.stufen.forEach(function (s) {\n            const z = el('div', 'display: flex; gap: 12px; align-items: center; padding: 7px 0; border-bottom: 1px solid var(--border, #2a2a35);');\n            z.appendChild(el('span', 'width: 100px; color: ' + (s.erreicht ? 'var(--accent, #7ee787)' : 'var(--text-secondary, #a0a0b0)') + '; font-family: monospace; font-weight: 700;', s.name));\n            z.appendChild(el('span', 'width: 90px; color: var(--text-secondary, #a0a0b0); font-family: monospace; font-size: 0.85rem;', s.dichte + ' px\/m'));\n            z.appendChild(el('span', 'flex: 1; color: var(--text-primary, #e8e8ee); font-family: monospace; font-size: 0.85rem;', T.z_reichweite.replace('%s', String(s.weite))));\n            tabelle.appendChild(z);\n        });\n        out.appendChild(tabelle);\n\n        if (erg.ziel) {\n            out.appendChild(el('div', UEBERSCHRIFT, T.h_empfehlung));\n            const empfehlung = el('div', KASTEN);\n            zeile(empfehlung, T.z_zielbrennweite, erg.zielBrennweite + ' mm', true);\n            empfehlung.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.85rem; line-height: 1.6; padding-top: 6px;', T.empfehlung_erklaerung));\n            out.appendChild(empfehlung);\n        }\n\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        const befunde = el('div', KASTEN);\n        erg.befunde.forEach(function (b) {\n            const z = el('div', 'display: flex; gap: 10px; padding: 5px 0;');\n            z.appendChild(el('span', 'color: ' + (b.schwer ? '#ffb86c' : 'var(--text-secondary, #a0a0b0)') + '; font-family: monospace;', b.schwer ? '!' : '-'));\n            z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0); font-size: 0.9rem; line-height: 1.5;', b.text));\n            befunde.appendChild(z);\n        });\n        out.appendChild(befunde);\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Przelicza rozmiar matrycy, ogniskow\u0105 i odleg\u0142o\u015b\u0107 na pole widzenia oraz piksele na metr i wskazuje, kt\u00f3ry poziom DORI kamera faktycznie osi\u0105ga.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92460,92310],"class_list":["post-10267","page","type-page","status-publish","hentry","tag-monitoring-cctv-pl-pl","tag-networking-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Przelicza rozmiar matrycy, ogniskow\u0105 i odleg\u0142o\u015b\u0107 na pole widzenia oraz piksele na metr i wskazuje, kt\u00f3ry poziom DORI kamera faktycznie osi\u0105ga.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/cctv-lens-fov-pixel-density-calculator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/cctv-lens-fov-pixel-density-calculator\\\/\",\"name\":\"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-14T22:56:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/cctv-lens-fov-pixel-density-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/cctv-lens-fov-pixel-density-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/cctv-lens-fov-pixel-density-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV - Lukas Wojcik - Blog","og_description":"Przelicza rozmiar matrycy, ogniskow\u0105 i odleg\u0142o\u015b\u0107 na pole widzenia oraz piksele na metr i wskazuje, kt\u00f3ry poziom DORI kamera faktycznie osi\u0105ga.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/","name":"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-14T22:56:42+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cctv-lens-fov-pixel-density-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Kalkulator obiektywu, pola widzenia i g\u0119sto\u015bci pikseli CCTV"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10267"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10267\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10267"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}