Mocniejsze rozmycie tla
Deploy PROD / deploy (push) Successful in 24s

Domyslne `blurRadius: 10` z biblioteki jest za slabe do tego zastosowania.
Sprawdzone na zywo przy prowadzeniu z domu: przez rozmycie widac uklad pokoju,
zdjecia na polkach i przechodzace osoby, czyli dokladnie to, co ma zaslaniac.

25 daje tlo nierozpoznawalne. Obrys postaci zostaje przy tym czysty, bo maska
pochodzi z modelu segmentacji i nie zalezy od sily rozmycia: podnoszenie jej
nie psuje krawedzi. Kosztuje nieco mocy procesora, bo rozmycie liczy sie dla
kazdej klatki.

Model zostaje ten sam. `selfie_segmenter.tflite` to wariant "general" 256x256,
czyli DOKLADNIEJSZY z dwoch dostepnych; szybszego wariantu "landscape" uzywa
Google Meet. Przy nieruchomym prelegencie roznica w plynnosci jest
niezauwazalna, a jakosc obrysu ma tu wieksze znaczenie.

Wartosc w stalej z wyjasnieniem, zeby nastepna zmiana nie byla zgadywaniem.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 14:36:09 +02:00
parent e7288c9f7e
commit 2cff986760
@@ -32,6 +32,25 @@ import { Icon } from '../../components/Icon'
* przepinana w locie. Tryb `disabled` przepuszcza obraz bez zmian i nie * przepinana w locie. Tryb `disabled` przepuszcza obraz bez zmian i nie
* przerywa publikacji. * przerywa publikacji.
*/ */
/**
* Sila rozmycia tla.
*
* Domyslne 10 z biblioteki jest ZA SLABE do tego zastosowania: przy prowadzeniu
* z domu widac przez nie uklad pokoju, zdjecia na polkach i osoby przechodzace
* w tle, czyli dokladnie to, co rozmycie ma zaslonic. Sprawdzone na zywo.
*
* 25 daje tlo nierozpoznawalne, a obrys postaci zostaje czysty: maska pochodzi
* z modelu segmentacji i nie zalezy od tej wartosci, wiec podnoszenie sily nie
* psuje krawedzi. Kosztuje za to nieco mocy procesora, bo rozmycie liczy sie
* dla kazdej klatki.
*
* Model `selfie_segmenter` to wariant "general" (256x256), czyli dokladniejszy
* z dwoch dostepnych. Wariant "landscape" jest szybszy i tego uzywa Google Meet,
* ale przy nieruchomym prelegencie roznica w plynnosci jest niezauwazalna,
* a jakosc obrysu ma tu wieksze znaczenie.
*/
const BLUR_RADIUS = 25
export function BackgroundBlurToggle({ className = '' }: { className?: string }) { export function BackgroundBlurToggle({ className = '' }: { className?: string }) {
const { cameraTrack } = useLocalParticipant() const { cameraTrack } = useLocalParticipant()
const [enabled, setEnabled] = useState(false) const [enabled, setEnabled] = useState(false)
@@ -79,7 +98,7 @@ export function BackgroundBlurToggle({ className = '' }: { className?: string })
const processor = BackgroundProcessor({ const processor = BackgroundProcessor({
mode: 'background-blur', mode: 'background-blur',
blurRadius: 10, blurRadius: BLUR_RADIUS,
assetPaths: { assetPaths: {
tasksVisionFileSet: '/mediapipe/wasm', tasksVisionFileSet: '/mediapipe/wasm',
modelAssetPath: '/mediapipe/selfie_segmenter.tflite', modelAssetPath: '/mediapipe/selfie_segmenter.tflite',