Removing blur from images – deconvolution and using simple image filters

Left: Original image. Center: Blurred through convolution. Right: Deconvolution of the blurred image. In this post, we’ll have a look at the idea of removing blur from images, videos, or games thro… | Continue reading


@bartwronski.com | 1 year ago

Transforming “noise” and random variables through non-linearities

This post covers a topic slightly different from my usual ones and something I haven’t written much about before – applied elements of probability theory. We will discuss what happens with “n… | Continue reading


@bartwronski.com | 2 years ago

Exposure Fusion – local tonemapping for real-time rendering

Local tonemapping in action. HDRI texture credit: Greg Zaal, CC0. In this post I want to close the loop and come back to the topic I described ~6y ago! Local tonemapping (I’ll refer to it as LTM) &… | Continue reading


@bartwronski.com | 2 years ago

Light transport matrices, SVD, spectral analysis, and matrix completion

Singular components of a light transport matrix – for an explanation of what’s going on – keep on reading! In this post I’ll describe a small hike into the landscape of using line… | Continue reading


@bartwronski.com | 2 years ago

Modding Korg MS-20 Mini – PWM, Sync, Osc2 FM

Almost every graphics programmer I know is playing right now with some electronics (virtual high five!), so I won’t be any different. But I decided to make it “practical” and writ… | Continue reading


@bartwronski.com | 2 years ago

Comparing images in frequency domain. “Spectral loss” – does it make sense?

Recently, numerous academic papers in the machine learning / computer vision / image processing domains (re)introduce and discuss a “frequency loss function” or “spectral loss” – … | Continue reading


@bartwronski.com | 2 years ago

On Leaving California and the Silicon Valley

Beginning of the year, my wife and I made a final call – to leave California, “as soon as possible”. To be fair, we talked about this for a long time; a few years, but without any concrete da… | Continue reading


@bartwronski.com | 2 years ago

Why are video games graphics (still) a challenge?

Intro This post will cover challenges and aspects of production to consider when creating new rendering / graphics techniques and algorithms – especially in the context of applied research fo… | Continue reading


@bartwronski.com | 3 years ago

Compressing PBR material texture sets with sparsity and kSVD dictionary learning

Introduction In this blog post, I am going to continue exploration of compressing whole PBR texture sets together (as opposed to compressing each texture from the set separately) and using the fact… | Continue reading


@bartwronski.com | 3 years ago

Dimensionality reduction for image and texture set compression

Teaser image: Example PBR Texture set compressed with presented technique.Textures credit cc0textures, Lennart Demes. In this blog post I am going to describe some of my past investigations on redu… | Continue reading


@bartwronski.com | 3 years ago

“Optimizing” blue noise dithering – backpropagation through Fourier and sorting

Introduction This will be a blog post that is second in an (unanticipated) series on interesting uses of the JAX numpy autodifferentiation library, as well as an extra post in my very old post seri… | Continue reading


@bartwronski.com | 4 years ago

Bilinear texture filtering – artifacts, alternatives, frequency domain analysis

In this post we will look at one of the staples of real-time computer graphics – bilinear texture filtering. To catch your interest, I will start with focusing on something that is often refe… | Continue reading


@bartwronski.com | 4 years ago

Using JAX, numpy, and optimization to improve low-rank, separable image filters

By the end of this blog post, we aim to improve the results of my previous blog post of approximating circular bokeh with a sum of 4 separable filters and reducing its artifacts (left) through an o… | Continue reading


@bartwronski.com | 4 years ago

Separability, SVD, and low-rank approximation of 2D image processing filters

In this blog post, I explore separable convolutional image filters: how can we check if a 2D filter is separable, and how to compute separable approximations to any arbitrary 2D filter represented … | Continue reading


@bartwronski.com | 4 years ago

Analyze your own activity data using Google Takeout – music stats example

The goal of this post is to show how to download our own data stored and used by internet services to generate personalized stats / charts like below and will show step-by-step how to do it using c… | Continue reading


@bartwronski.com | 4 years ago

Dithering in Games – Mini Series

This an opening post of mini blog post series about various uses of dithering for quantization and sampling in video games. It is something most of us use intuitively in every day work, so wanted t… | Continue reading


@bartwronski.com | 4 years ago

Dithering in Games, Part 1: Simple Quantization (2016)

Introduction First part of this mini-series will focus on more theoretical side of dithering -some history and applying it for 1D signals and to quantization. I will try to do some frequency analys… | Continue reading


@bartwronski.com | 4 years ago

(not) to test graphics algorithms

Intro Siggraph 2019 is sadly over, but as always I came back super inspired and grateful for meeting many friends.  Conferences are mostly not about seeing the presentations – but about all t… | Continue reading


@bartwronski.com | 4 years ago