Category Archives: Code / Graphics

Gradient-descent optimized recursive filters for deconvolution / deblurring

This post is a follow-up to my post on deconvolution/deblurring of the images. In my previous blog post, I discussed the process of “deconvolution” – undoing a known convolution operation. I have focused on traditional convolution filters – “linear phase, … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , , , | Leave a comment

Progressive image stippling and greedy blue noise importance sampling

Introduction I recently read the “Gaussian Blue Noise” paper by Ahmed et al. and was very impressed by the quality of their results and the rigor of their method. They provide a theoretical framework to analyze the quality of blue … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , , , | 3 Comments

Removing blur from images – deconvolution and using optimized simple filters

In this post, we’ll have a look at the idea of removing blur from images, videos, or games through a process called “deconvolution”. We will analyze what makes the process of deblurring an image (blurred with a known blur kernel) … Continue reading

Posted in Code / Graphics | 5 Comments

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 “noise” – a random variable – when we apply … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , , , | Leave a comment

Fast, GPU friendly, antialiasing downsampling filter

In this shorter post, I will describe a 2X downsampling filter that I propose as a “safe default” for GPU image processing. It’s been an omission on my side that I have not proposed any specific filter despite writing so … Continue reading

Posted in Code / Graphics | Tagged , , , , , , | 3 Comments

Exposure Fusion – local tonemapping for real-time rendering

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) – a component I considered a missing piece in video games rendering, especially … Continue reading

Posted in Code / Graphics | Tagged , , , , , | Leave a comment

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

In this post I’ll describe a small hike into the landscape of using linear algebra methods for analyzing seemingly non-algebraic problems, like light transport. This is very common in some domains of computer science / electrical engineering (seeing everything as … Continue reading

Posted in Code / Graphics | Tagged , , | 1 Comment

Insider guide to tech interviews

I’ve been meaning to write this post for over a year… an unofficial insider guide to tech interviews! This is the essence of the advice I give my friends (minus personal circumstances and preferences) all the time, and I figured … Continue reading

Posted in Code / Graphics | 6 Comments

Procedural Kernel (Neural) Networks

Last year I worked for a bit on a fun research project that ended up published as an arXiv “pre-print” / technical report and here comes a few paragraph “normal language” description of this work. Neural Networks are taking over … Continue reading

Posted in Code / Graphics | Tagged , , , , | Leave a comment

Study of smoothing filters – Savitzky-Golay filters

Last week I saw Daniel Holden tweeting about Savitzky-Golay filters and their properties (less smoothing than a Gaussian filter) and I got excited… because I have never heard of them before and it’s an opportunity to learn something. When I … Continue reading

Posted in Code / Graphics | Tagged , , , , , | Leave a comment

Practical Gaussian filtering: Binomial filter and small sigma Gaussians

Gaussian filters are the bread and butter of signal and image filtering. They are isotropic and radially symmetric, filter out high frequencies extremely well, and just look pleasant and smooth. In this post I will cover two of my favorite … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , | 5 Comments

Processing aware image filtering: compensating for the upsampling

This post summarizes some thoughts and experiments on “filtering aware image filtering” I’ve been doing for a while. The core idea is simple – if you have some “fixed” step at the end of the pipeline that you cannot control … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , | 7 Comments

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” – and while for many it makes sense and nicely improves achieved results, some of … Continue reading

Posted in Code / Graphics | Tagged , , , , , | 6 Comments

Neural material (de)compression – data-driven nonlinear dimensionality reduction

In this post I come back to something I didn’t expect coming back to – dimensionality reduction and compression for whole material texture sets (as opposed to single textures) – a significantly underexplored topic. In one of my past posts … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , , , , | 5 Comments

Superfast void-and-cluster Blue Noise in Python (Numpy/Jax)

This is a super short blog post to accompany this Colab notebook. It’s not an official part of my dithering / Blue Noise post series, but thematically fits it well and be sure to check it out for some motivation … Continue reading

Posted in Code / Graphics | Tagged , , , , , | 2 Comments

Computing gradients on grids of pixels and voxels – forward, central, and… diagonal differences

In this post, I will focus on gradients of image signals defined on grids in computer graphics and image processing. Specifically, gradients / derivatives of images, height fields, distance fields, when they are represented as discrete, uniform grids of pixels … Continue reading

Posted in Code / Graphics | Tagged , , , , , | 8 Comments

Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel offset

It’s been more than two decades of me using bilinear texture filtering, a few months since I’ve written about bilinear resampling, but only two days since I discovered a bug of mine related to it. 😅 Similarly, just last week … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , | 11 Comments

Is this a branch?

Let’s try a new format – “shorts”; small blog posts where I elaborate on ideas that I’d discuss at my twitter, but they either come back over and over, or the short form doesn’t convey all the nuances. I often … Continue reading

Posted in Code / Graphics | Tagged , , , , , , | 7 Comments

Why are video games graphics (still) a challenge? Productionizing rendering algorithms

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 for real time rendering. I will base this on my personal … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , , | 4 Comments

Compressing PBR material texture sets with sparsity and k-SVD 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 that those textures are strongly correlated. In my … Continue reading

Posted in Code / Graphics | Tagged , , , , , , , , , , | 8 Comments