Live data from Hacker News

Show HN: Movie Iris - Visualizing Films Through Color Extraction

github.com

31–40 of 44 posts

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#31

I did something similar a few years back. I find the Hilbert curve pattern much more interesting. https://github.com/akash-akya/hilbert-montage Not an original idea, it was inspired by someone else at that time.

Interesting: at first blush, it looks like it's clustered based on image similarity rather than time?

But that must be wrong, the README.md mentions it visualizing time.

I'd love to understand a bit more.

The README.md punts to Wikipedia on Hilbert curves, which is classic Wikipedia, makes sense if you understand it already :) and a 20 minute video on Hilbert curves, which I find hard to commit to, assuming its unlikely it touches on movie visualization via Hilbert curves.

It's definitely hard, and not your responsibility, to explain the scientific concept.

But, I'd love to have your understanding of how the visualization is more interesting.

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#32
post #11

Here's how to do it with ffmpeg and ImageMagick: ffmpeg -i input.mp4 -vf "scale=1:ih" frames_%04d.png magick montage -mode concatenate -tile x1 frames_*.png "output.png"

Probably want a `-vf fps=1/n` in there (where n = number of seconds) to trim the film down to a manageable number of frames. (you'd ideally do some "clever" processing to combine a number of frames into a single colour strip but that's obviously more faff than just a simple `ffmpeg` call...)

You could also use something like https://github.com/Breakthrough/PySceneDetect to first split the video into camera shots, and then grab a single (or average) frame per shot, leading to a cleaner result.

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#33

I did something similar a few years back. I find the Hilbert curve pattern much more interesting. https://github.com/akash-akya/hilbert-montage Not an original idea, it was inspired by someone else at that time.

Interesting: at first blush, it looks like it's clustered based on image similarity rather than time? But that must be wrong, the README.md mentions it visualizing time. I'd love to understand a bit more. The README.md punts to Wikipedia on Hilbert curves, which is classic Wikipedia, makes sense if you understand it already :) and a 20 minute video on Hilbert curves, which I find hard to commit to, assuming its unlik…

Tl;dr fancy way to map 1D time to 2D image

If you imagine a movie as a line along the time axis with each frame as a pixel, there are multiple way to create an 2D image.

Bargraph is simple approach, but essentially it is still is a one dimensional. We are only using x axis.

Zig-zag pattern is another approach, where you start from top to bottom, left to right. But in this case the relative distance between close frames aren't fully preserved. Two distant frames might appear together, or close frames might end up far apart, which leads to odd looking artifacts.

Hilbert curve is a pattern to map 1D to fill space (2D) such that relative distance between any two points (frames) on the 1D line is somewhat preserved. That's why it appears as clump/blob.

Here it is hard to see the movie progression from start to end but all frames from a scene are always closer, which was what I was aiming. I find it interesting that visual aspect (color/scene) is easy to see here but temporal aspect isn't.

I was excited about the whole 1D to 2D mapping aspect at that time, leading to this toy.

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#34
post #7

I don't know if this is the "original" (it's a common idea), but here's some "movie barcode" Python code from 9 years ago: https://github.com/timbennett/movie-barcodes

This tumblr was posting these from 2011 to 2018 - moviebarcode.tumblr.com

I think it's something people keep rediscovering. It's a pretty fun programming problem that lets you explore lots of different domains at the same time (video processing, color theory, different coordinate systems for visualizing things) and you get a tangible "cool" piece of art at the end of your effort.

I built one of these back in the day. Part of the fun was seeing how fast I could make the pipeline. Once I realized that FFMPEG could read arbitrary byte ranges directly from S3, I went full ham into throwing machines at the problem. I could crunch through a 4 hour movie in a few seconds by distributing the scene extraction over an army lambdas (while staying in the free tier!). Ditto for color extraction and presentation. Lots of fun was had.

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#35

I wonder if someone could use this to demonstrate how much darker films seem to have gotten. That and actors that mumble their words...

I'm not sure the actors are mumbling their words. I think the issue stems from the way sound is decoded on people's devices. Movies used to be mixed down to stereo and TVs have no problem producing the sound. Now that it's possible to stream, say 7.2, the TV will tell the service to send something like that but the TV does a poor job of outputting the center vocal channel through it's two rear $3 speakers so you can hear it. The same audio track decoded with a nice cinema amp and two center speakers will generally be really clear. (Also some TVs have a setting to boost the vocals to try and fix this)

Again, with the dark movies. They seem to be color graded and encoded for HDR screens, and most HDR screens are really a fake type of HDR and so the movies just come out super dark. They look a lot less horrible on a really great high-end TV in a totally dark room.

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#36

Earlier quoted context omitted.

Probably want a `-vf fps=1/n` in there (where n = number of seconds) to trim the film down to a manageable number of frames. (you'd ideally do some "clever" processing to combine a number of frames into a single colour strip but that's obviously more faff than just a simple `ffmpeg` call...)

You could also use something like https://github.com/Breakthrough/PySceneDetect to first split the video into camera shots, and then grab a single (or average) frame per shot, leading to a cleaner result.

I believe ffmpeg also has some scene detection stuff[0] but I've never had occasion to use it.

[0] e.g. https://stackoverflow.com/questions/35675529/using-ffmpeg-ho...

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#37

I did something similar a few years back. I find the Hilbert curve pattern much more interesting. https://github.com/akash-akya/hilbert-montage Not an original idea, it was inspired by someone else at that time.

Nice project and thanks for all your work maintaining vix!

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#38

Earlier quoted context omitted.

Interesting: at first blush, it looks like it's clustered based on image similarity rather than time? But that must be wrong, the README.md mentions it visualizing time. I'd love to understand a bit more. The README.md punts to Wikipedia on Hilbert curves, which is classic Wikipedia, makes sense if you understand it already :) and a 20 minute video on Hilbert curves, which I find hard to commit to, assuming its unlik…

Tl;dr fancy way to map 1D time to 2D image If you imagine a movie as a line along the time axis with each frame as a pixel, there are multiple way to create an 2D image. Bargraph is simple approach, but essentially it is still is a one dimensional. We are only using x axis. Zig-zag pattern is another approach, where you start from top to bottom, left to right. But in this case the relative distance between close fram…

Another good example of hilbert curves as visualization is this online bin file analyzer:

https://binvis.io/#/view/examples/elf-Linux-ARMv7-ls.bin

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#39

I wonder if someone could use this to demonstrate how much darker films seem to have gotten. That and actors that mumble their words...

I'm not sure the actors are mumbling their words. I think the issue stems from the way sound is decoded on people's devices. Movies used to be mixed down to stereo and TVs have no problem producing the sound. Now that it's possible to stream, say 7.2, the TV will tell the service to send something like that but the TV does a poor job of outputting the center vocal channel through it's two rear $3 speakers so you can…

Great article on the subject: https://www.slashfilm.com/673162/heres-why-movie-dialogue-ha...

Re: Show HN: Movie Iris - Visualizing Films Through Color Extraction

#40

I did something similar a few years back. I find the Hilbert curve pattern much more interesting. https://github.com/akash-akya/hilbert-montage Not an original idea, it was inspired by someone else at that time.

Interesting: at first blush, it looks like it's clustered based on image similarity rather than time? But that must be wrong, the README.md mentions it visualizing time. I'd love to understand a bit more. The README.md punts to Wikipedia on Hilbert curves, which is classic Wikipedia, makes sense if you understand it already :) and a 20 minute video on Hilbert curves, which I find hard to commit to, assuming its unlik…

A Hilbert curve is a mapping between 1D and 2D space that attempts to preserve locality. Two points that are close in 2D space tend to map to two points that are close in 1D space and vice versa.
Post reply on HN