High dynamic range (HDR) image comparison tool for graphics people. With an emphasis on OpenEXR images.

Overview

tev — The EXR Viewer

A high dynamic range (HDR) image comparison tool for graphics people. tev allows viewing images through various tonemapping operators and inspecting the values of individual pixels. Often, it is important to find exact differences between pairs of images. For this purpose, tev allows rapidly switching between opened images and visualizing various error metrics (L1, L2, and relative versions thereof). To avoid clutter, opened images and their layers can be filtered by keywords.

New: tev can display true HDR on Apple extended dynamic range (EDR) and 10-bit displays.

While the predominantly supported file format is OpenEXR certain other types of images can also be loaded. The following file formats are currently supported:

  • EXR (via OpenEXR)
  • PFM (compatible with Netbpm)
  • QOI (via qoi. Shoutout to Tiago Chaves for adding support!)
  • DDS (via DirectXTex; Windows only. Shoutout to Craig Kolb for adding support!)
    • Supports BC1-BC7 compressed formats.
    • Low-dynamic-range (LDR) images are "promoted" to HDR through the reverse sRGB transformation.
  • HDR, BMP, GIF, JPEG, PIC, PNG, PNM, PSD, TGA (via stb_image)
    • stb_image only supports subsets of each of the aforementioned file formats.
    • Low-dynamic-range (LDR) images are "promoted" to HDR through the reverse sRGB transformation.

Screenshot

Screenshot A false-color comparison of two multi-layer OpenEXR images of a beach ball. Image courtesy of openexr-images.

Usage

Graphical User Interface

Images can be opened via a file dialog or by dragging them into tev. They can be reloaded, closed, or filtered at any time, so don't worry about opening more images than exactly needed.

Select an image by left-clicking it, and optionally select a reference image to compare the current selection to by right-clicking. For convenience, the current selection can be moved with the Up/Down or the 1-9 keys. For a comprehensive list of keyboard shortcuts click the little "?" icon at the top (or press "h").

If the interface seems overwhelming, you can hover any controls to view an explanatory tooltip.

Command Line

tev takes images as positional command-line arguments:

$ tev foo.exr bar.exr

By default, all layers and channels are loaded, but individual layers or channels can also be specified. In the following example, the depth layer of foo.exr and the r, g, and b channels of foo.exr and bar.exr are loaded.

$ tev :depth foo.exr :r,g,b foo.exr bar.exr

Other command-line arguments exist (e.g. for starting tev with a pre-set exposure value). For a list of all arguments simply invoke

$ tev -h

Over the Network

tev can also be controlled remotely over the network using a simple TCP-based protocol.

The --host argument specifies the IP and port tev is listening to. By default, tev only accepts connections from localhost (127.0.0.1:14158), which is useful, for example, as frontend for a supported renderer like pbrt version 4.

The following operations exist:

Operation Function
OpenImage Opens an image from a specified path on the machine tev is running on.
CreateImage Creates a blank image with a specified name, size, and set of channels.
UpdateImage Updates the pixels in a rectangular region.
CloseImage Closes a specified image.
ReloadImage Reloads an image from a specified path on the machine tev is running on.

tev's network protocol is already implemented in the following languages:

If using these implementations is not an option, it's easy to write your own one. Each packet has the simple form

[uint32_t total_length_in_bytes][byte operation_type][byte[] operation_specific_payload]

where integers are encoded in little endian.

There are helper functions in Ipc.cpp (IpcPacket::set*) that show exactly how each packet has to be assembled. These functions do not rely on external dependencies, so it is recommended to copy and paste them into your project for interfacing with tev.

Obtaining tev

macOS / Windows

Pre-built binaries for Windows (32-bit and 64-bit) and macOS (64-bit) are available on the releases page.

On macOS, tev can also be installed via homebrew:

brew install --cask tev

Linux

Building tev

All that is required for building tev is a C++20-compatible compiler. Begin by cloning this repository and all its submodules using the following command:

$ git clone --recursive https://github.com/Tom94/tev

If you accidentally omitted the --recursive flag when cloning this repository you can initialize the submodules like so:

$ git submodule update --init --recursive

tev uses CMake as its build system. The following sections detail how it should be used on various operating systems.

macOS / Linux

On macOS and most Linux distributions CMake can be obtained via a package manager (Homebrew on macOS, apt on Ubuntu/Debian, etc.). Most Linux distributions additionally require xorg, gl, and zlib development packages and zenity. On Ubuntu/Debian simply call

$ apt-get install cmake xorg-dev libglu1-mesa-dev zlib1g-dev zenity

Once all dependencies are installed, create a new directory to contain build artifacts, enter it, and then invoke CMake with the root tev folder as argument as shown in the following example:

$ mkdir build
$ cd build
$ cmake ..

Afterwards, tev can be built and installed via

$ make -j
$ make install

Windows

On Windows, install CMake, open the included GUI application, and point it to the root directory of tev. CMake will then generate Visual Studio project files for compiling tev. Make sure you select at least Visual Studio 2019 or higher!

License

tev is available under the BSD 3-clause license, which you can find in the LICENSE.md file. TL;DR you can do almost whatever you want as long as you include the original copyright and license notice in any copy of the software and the source code.

Comments
  • IPC docs

    IPC docs

    First of all thanks for writing this tool, it very quick and easy to use!

    I read that tev supports some kind of IPC protocol where it can show an image while it is being rendered. From what I gather you're supposed to send the image data to tev using TCP on the port it prints when it starts up, and the port is also configurable from the commandline options, that all makes sense.

    What I can't find anywhere is what exactly I'm supposed to send to tev. Do I just dump the content of an exr file in a single TCP packet? Or is there some kind of custom protocol for sending incremental updates to tev?

    Maybe instructions for this could be added to the README? I could be missing something but I can't find any documentation about the IPC feature.

    opened by KarelPeeters 14
  • memory leak when the network update function is used

    memory leak when the network update function is used

    I'm seeing a memory leak in recent versions of tev when sending images from pbrt running another process. (I've been seeing this for a while now, maybe a few months, but only made a repro case now--apologies.)

    The attached repro program (extracted from pbrt, so not minimal!) takes a single command-line argument and connects to a running tev server at that address. It then spams it continuously with image updates. I am seeing two things (this is on OSX, FWIW):

    • tev's memory use (as reported by top) grows by about 1 MB every second
    • interestingly, if I hide tev (command-H), or make another window active and then click on tev to make it active again, memory use jumps up by about 50MB within a few seconds than another 40MB or so again a few seconds later.

    So, between those two, it can add up to gigabytes after a while, especially with a long render running.

    opened by mmp 13
  • Crash due to X error 20 (X_GetProperty) upon file opening under XMonad

    Crash due to X error 20 (X_GetProperty) upon file opening under XMonad

    I installed tev via the AUR and I can start it just fine. However, as soon as I try to open a file (or start with a file via the command line) I get the following error from tev crashing;

    X Error of failed request:  BadAtom (invalid Atom parameter)
      Major opcode of failed request:  20 (X_GetProperty)
      Atom id in failed request:  0x0
      Serial number of failed request:  218
      Current serial number in output stream:  218
    

    It is neither dependent on the file nor the file type (at least as far as I can tell).

    I am using version 1.12dev under Arch Linux (4.18.10-arch1-1-ARCH) running xmonad version 0.14

    bug 
    opened by mrossinek 11
  • View multiple channels in layer

    View multiple channels in layer

    Hello Tom94,

    Thank you for the software, it is amazing.

    Here is my issue. I have an image with RGB channels as well as XYZ ones. They are all listed as part of the layer when the mouse hovers above the image name on the left panel. I guess the color image I see on the main window is only the display of the RGB channels as it should but what about the XYZ channels ? I can't even view their values when zooming in nor switch between layers since there is only the one.

    I know I could make a new layer for the XYZ channels but I propose two additional features. The first would be to display all the values of the channels of the current layer when zooming in instead of only the first three (or RGB). The downside is that the display would could become quite hectic when there is more than 6-7 channels.

    The second would be to have a way to switch between channels like the way we can switch between layers (this feature is already so useful). Or a way to select the channels we want to display.

    What do you (and other people) think ?

    opened by Wagyx 9
  • Pixel intensity overflow in HDR mode

    Pixel intensity overflow in HDR mode

    Hi Thomas,

    I noticed that the new HDR view of 'tev' encounters some kind of overflow/non-monotonicity when cranking up the exposure and bright pixels (EXR value ~ 5) are visible. This happens in the green/red visualization of signed images -- try opening the attached EXR file on a Mac in HDR mode and increase the exposure -- suddenly, many of the pixel flip from red to black.

    I tried to capture a screengrab, but curiously the problem isn't visible there. It's possible that there is some kind of max intensity value for floating point buffers (e.g. 64K) that is being reached.

    Thanks, Wenzel

    bwd.exr.zip

    opened by wjakob 7
  • Package linux binaries as AppImage

    Package linux binaries as AppImage

    I had some time to get into AppImage and used tev as my demo application.

    The solution calling CPack is inspired by this gist It introduces an "External" CPack Generator script that (downloads and) calls linuxdeploy on an installed directory (by CMake) structure that adheres to the AppDir specification.

    An attempt to solve #164

    I was not able to test it on a Linux machine with a display attached yet, but it builds in the CI (tested) and starts (until it can't find a display). So I don't know if the icon shows up on the file and if the .desktop integration works.

    opened by diiigle 6
  • 1.18+: IPC stopped sharing instaces by default?

    1.18+: IPC stopped sharing instaces by default?

    Since version 1.18 it seems that when launching tev for the second time it does not properly connect to the existing instance any more.

    For example:

    image

    I launched tev in the left terminal first, which opened a new window as expected. Then I launched tev in the second terminal, it says it's connecting to the primary instance (which the left terminal confirms) but then still opens its own window.

    I get the same issue on the 1.18, 1.19 and 1.20 released exe files, on 1.17 everything works as normal.

    Did the behavior intentionally change? I checked the change-logs but couldn't really find anything.

    opened by KarelPeeters 6
  • WIP: Add initial support for the QOI image format

    WIP: Add initial support for the QOI image format

    This PR adds support for the new "Quite OK Image" format (qoi).


    This PR is currently labeled as ⚠ work in progress ⚠ because:

    • The QOI format specification will suffer some breaking changes in the following days, after which it should be "locked" (see https://github.com/phoboslab/qoi/issues/28);
    • qoi.h doesn't seem to have a way for querying the number of color channels in a file when loading it, analogous to stb_image's int *channels_in_file output parameter (see https://github.com/phoboslab/qoi/issues/16);
    • Also unlike stb_image, qoi.h does not have functions that take in some parameter like stbi_io_callbacks. Hence, I'm using path.str().c_str() directly for loading and saving the files (instead of C++ streams). Please let me know if this is a problem, or if the code can be kept this way.

    Other notes:

    • I have replaced filesystem::path& -> ::filesystem::path& in the include/tev/imageio/Image*.h files, as Visual Studio warns about filesystem being ambiguous;
    • I have replaced ostream& iStream -> ostream& oStream in src/imageio/StbiLdrImageSaver.cpp, for consistency;
    • I have only compiled this on Windows, using Visual Studio 16 2019. It would be great to have it tested on at least one other platform to make sure there won't be problems with qoi.h being a C99 file (also, see src/imageio/QoiImplementation.c).
    opened by laurelkeys 6
  • Loading all images from a folder

    Loading all images from a folder

    Hello, Thank you so much for creating this repo.

    What do I have to do in order to:

    1. Load 1000 image names from a folder, populate your LHS image list with these names and then trigger image display upon clicking an image name on the list

    2. Following that, I want to display the image and the normalized image side by side in the image pane

    Thanks,

    help wanted 
    opened by ghost 6
  • Specify UTF-8 charset for MSVC

    Specify UTF-8 charset for MSVC

    On Windows systems with non-English locales, the UTF-8 chars may cause "Error C2001: Newline in constant".

    2 solutions: Save the file with UTF-8 with BOM (byte-order mark). Specify UTF-8 charset for compilation. Used by this commit.

    See discussions here: https://github.com/libusb/libusb/issues/207#issuecomment-288664124

    opened by chaosink 5
  • unnable to build on linux

    unnable to build on linux

    after running cmake .. in the build directory no then running make -j4 it crashes stating

    [  0%] Built target Half
    [  3%] Built target Iex
    [  3%] Built target clip
    [ 10%] Built target glfw_objects
    [ 12%] Built target IexMath
    [ 17%] Built target IlmThread
    [ 35%] Built target nanogui
    [ 39%] Built target Imath
    [ 83%] Built target IlmImf
    [ 85%] Building CXX object CMakeFiles/tev.dir/src/imageio/ClipboardImageLoader.cpp.o
    [ 85%] Building CXX object CMakeFiles/tev.dir/src/imageio/EmptyImageLoader.cpp.o
    [ 85%] Building CXX object CMakeFiles/tev.dir/src/imageio/ExrImageSaver.cpp.o
    [ 85%] Building CXX object CMakeFiles/tev.dir/src/imageio/ExrImageLoader.cpp.o
    c++: error: unrecognized command line option ‘-fcoroutines’
    c++: error: unrecognized command line option ‘-fcoroutines’
    make[2]: *** [CMakeFiles/tev.dir/build.make:63: CMakeFiles/tev.dir/src/imageio/ClipboardImageLoader.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    make[2]: *** [CMakeFiles/tev.dir/build.make:76: CMakeFiles/tev.dir/src/imageio/EmptyImageLoader.cpp.o] Error 1
    c++: error: unrecognized command line option ‘-fcoroutines’
    c++: error: unrecognized command line option ‘-fcoroutines’
    make[2]: *** [CMakeFiles/tev.dir/build.make:89: CMakeFiles/tev.dir/src/imageio/ExrImageLoader.cpp.o] Error 1
    make[2]: *** [CMakeFiles/tev.dir/build.make:102: CMakeFiles/tev.dir/src/imageio/ExrImageSaver.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:786: CMakeFiles/tev.dir/all] Error 2
    make: *** [Makefile:130: all] Error 2
    
    opened by walksanatora 5
  • [feature request] Add option to select/ignore alpha channel

    [feature request] Add option to select/ignore alpha channel

    A simple combo-box/checkbox or shortcut to:

    • ignore the alpha channel for other channels
    • select only the alpha channel as a binary mask and ignore other channels
    opened by kunaltyagi 0
  • Use key Tab to show pixel raw bytes

    Use key Tab to show pixel raw bytes

    Shift+Ctrl should be held to show pixel raw bytes. But this keybinding conflicts with others, like reference image selection. A usage case prevented by this is that: keep showing pixel raw bytes, and switch between images by number keys for comparison.

    This commit changes the keybinding to Tab. @Tom94 Maybe you want another key. Thanks!

    opened by chaosink 3
  • [Feature Request/Discussion] Include previewing RGBA channels?

    [Feature Request/Discussion] Include previewing RGBA channels?

    Just a small suggestion that would make this tool very useful for texture artists. in form of toggleable buttons for each channel. maybe like the screenshot below, but you can press multiple channels to preview them all together or separately. untitled also a small hotkey to cycle through channels would be pretty neat. what do you think?

    opened by tomasvy 0
  • unable to install (Ubuntu 20.04) [you have held broken packages]

    unable to install (Ubuntu 20.04) [you have held broken packages]

    I was trying to install Tev(https://github.com/Tom94/tev) on my Laptop but when I ran the command

    sudo apt-get install cmake xorg-dev libglu1-mesa-dev zlib1g-dev zenity
    

    I got an weird error

    Reading package lists... Done Building dependency tree
    Reading state information... Done cmake is already the newest version (3.16.3-1ubuntu1). libglu1-mesa-dev is already the newest version (9.0.1-1build1). libglu1-mesa-dev set to manually installed. zenity is already the newest version (3.32.0-5). zenity set to manually installed. zlib1g-dev is already the newest version (1:1.2.11.dfsg-2ubuntu1.3). zlib1g-dev set to manually installed. Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: xorg-dev : Depends: xserver-xorg-dev but it is not going to be installed E: Unable to correct problems, you have held broken packages.

    then I updated and upgraded apt which did nothing.

    then I tried

    dpkg --get-selections | grep hold
    

    and

    sudo apt-get autoremove
    

    which also did nothing. Then I tryed to install everything manually.

    sudo apt-get -y install xserver-xorg-dev
    

    Reading package lists... Done Building dependency tree
    Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: xserver-xorg-dev : Depends: mesa-common-dev but it is not going to be installed E: Unable to correct problems, you have held broken packages.

    sudo apt install mesa-common-dev
    

    Reading package lists... Done Building dependency tree
    Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: mesa-common-dev : Depends: libdrm-dev (>= 2.4.95) but it is not going to be installed E: Unable to correct problems, you have held broken packages.

    sudo apt install libdrm-dev
    

    Reading package lists... Done Building dependency tree
    Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: libdrm-dev : Depends: libdrm2 (= 2.4.107-8ubuntu1~ 20.04.2) but 2.4.111+git2206130500.f7828d~ oibaf~ f is to be installed Depends: libdrm-intel1 (= 2.4.107-8ubuntu1~ 20.04.2) but 2.4.111+git2206130500.f7828d~ oibaf~ f is to be installed Depends: libdrm-radeon1 (= 2.4.107-8ubuntu1~ 20.04.2) but 2.4.111+git2206130500.f7828d~ oibaf~ f is to be installed Depends: libdrm-nouveau2 (= 2.4.107-8ubuntu1~ 20.04.2) but 2.4.111+git2206130500.f7828d~ oibaf~ f is to be installed Depends: libdrm-amdgpu1 (= 2.4.107-8ubuntu1~ 20.04.2) but 2.4.111+git2206130500.f7828d~ oibaf~ f is to be installed E: Unable to correct problems, you have held broken packages.

    I then also installed all libdrm... but it didn't change a thing.

    opened by Trumpf9sNell 0
  • Forcing 10-bit and/or HDR on startup

    Forcing 10-bit and/or HDR on startup

    I have attempted to use tev on my Windows 10 laptop, connected via HDMI to a 10-bit HDR monitor (LG 27GP950-B), but when the console window opens it always states: INFO Launching with 8 bits of color and LDR display support.

    I have confirmed that HDR is turned on in Windows display settings, as well as the Nvidia control panel. I've tried switching resolutions and framerate lower to enable higher bit depth. I have an iMac M1 that connects to the monitor as well, and it has no trouble running tev in HDR mode and correctly displaying a test .exr I have, so I know the monitor will do it and the cable is good.

    Is there any way to force these options as flags that I'm not seeing?

    opened by agentirons 2
  • [Feature Request/Discussion] Support spectral images

    [Feature Request/Discussion] Support spectral images

    I just wanted to raise awareness for spectral images that contain more than 3 channels.

    Tev now nicely shows the individual channels next to each other and one can scroll through them individually. However it would be also handy to have a rudimentary tonemapping (doesn't have to be as sophisticated as [2]) support, such that images would be integrated to sRGB. @afichet EXR layout [1] also contains the fallback RGB version of the image, but for cases where only spectral information is available (eg. over IPC) a simple sRGB conversion is useful.

    Is that something that more people would fancy?

    References

    • [1] https://jcgt.org/published/0010/03/01/
    • [2] https://adufay.gitlabpages.inria.fr/SpectralViewer/save/
    opened by diiigle 0
Releases(v1.24)
  • v1.24(Nov 19, 2022)

    Changes Since Last Release

    • Added features:
      • Images with mismatching channels can now be compared (such as RGB vs. RGBA). Missing channels will use a default value of 0 for colors and 1 for alpha.
      • Improves the behavior of creating new images via the IPC protocol. (with contributions from @anderslanglands)
      • Holding 'B' will display a border around the image. Useful for seeing the size of transparent images.
      • Pressing Cmd/Ctrl+0 will reset zoom to 100%.
      • Pressing Cmd/Ctrl+9 will zoom to fit the screen.
      • Saving an image on Windows will now automatically append the selected file extension.
      • The caption now includes the image resolution.
      • When the application window is vertically too small to hold the entire GUI, it will become scrollable such that images can still be selected.
    • Bugfixes
      • Added several missing keybindings to the help window.
      • Reduce flickering on macOS
      • Zooming with the -/= keys is now centered about the middle of the screen rather than the bottom right.

    Released Files

    • Pre-built binary (.exe) for Microsoft Windows
    • Pre-built universal binary (.dmg) for macOS (works on both ARM and Intel)
    • Pre-built binary (.appimage) for x64 Linux systems (thanks to @diiigle's contribution #194)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev.appimage(2.86 MB)
    tev.dmg(4.54 MB)
    tev.exe(5.44 MB)
  • v1.23(Jan 30, 2022)

    Changes Since Last Release

    • This is a hotfix release that addresses a std::chrono-related crash on certain systems. (#172)

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built universal binary for macOS (works on both ARM and Intel)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev.dmg(4.45 MB)
    tev.exe(5.37 MB)
  • v1.22(Jan 26, 2022)

    Changes Since Last Release

    • tev can now open directories. This will load all images within the directory, optionally recursively when the -r / --recursive CLI option is present.
    • tev can now monitor opened files and directories for changes and reload them automatically. This is enabled by the -w / --watch CLI option and a new UI button.
    • Pressing Esc or Q no longer closes tev. The shortcut is now Ctrl+Q (Cmd+Q on macOS)
    • Reloading (large numbers of) images by pressing Ctrl+R / Ctrl+Shift+R is now much faster and does not stall the user interface.
    • Fixed loading of images with empty root layer. Certain renderers, such as V-Ray generate those.
    • Fixed black pixels on certain HDR displays when color values are too large.
    • Fixed unicode rendering in certain Windows terminals.

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built universal binary for macOS (works on both ARM and Intel)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev.dmg(4.45 MB)
    tev.exe(5.38 MB)
  • v1.21(Jan 5, 2022)

    Changes Since Last Release

    This release consists mostly of bugfixes and quality-of-life improvements:

    • Made tev GLES 2.0 compatible, which means that it will run in a wider variety of environments, such as Linux on Parallels (via Virgil), or WebGL.
    • Added a CLI switch --no-new that is helpful when using tev as a renderer's frontend (see https://github.com/Tom94/tev/issues/161).
    • Migrated to C++17's std::filesystem, which improves support for strange filenames on Windows.
    • Fixed 100% utilization of a single CPU core under certain rare conditions (see https://github.com/Tom94/tev/issues/153)
    • Fixed stuttering on macOS when opening many images at once through the IPC protocol.
    • Fixed a sporadic crash on Windows when opening many images at once.
    • Fixed sporadic crashes upon shutdown when images were still loading.

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built universal binary for macOS (works on both ARM and Intel)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev.dmg(4.44 MB)
    tev.exe(5.35 MB)
  • v1.20(Dec 26, 2021)

    Changes Since Last Release

    • tev can now open QOI images.
    • This release (and following ones) come with a universal macOS binary, meaning that tev'll run native on both M1-based Apple computers as well as Intel-based ones.
    • Fixed several minor UX issues.
      • Notably: holding Shift no longer toggles the reference view. This is now done by holding Alt.

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built universal binary for macOS (works on both ARM and Intel)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev.dmg(4.41 MB)
    tev.exe(5.32 MB)
  • v1.19(Nov 25, 2021)

    Changes Since Last Release

    This version is a hotfix release that addresses a significant memory leak when using the Metal backend on macOS.

    • Another, smaller memory leak was fixed along the way.

    See https://github.com/Tom94/tev/issues/146 for more details.

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built binary for macOS
    • Pre-built backwards-compatibility binary for macOS pre-Catalina
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-pre-catalina.dmg(2.51 MB)
    tev.dmg(2.51 MB)
    tev.exe(5.28 MB)
  • v1.18(Nov 15, 2021)

    Changes Since Last Release

    • tev can now load large numbers of images over 2x faster than before.
      • This is due to an overhaul of the multi-threaded task scheduler based on C++20 coroutines.
    • Improved tev's support for EXR images.
      • Display and data windows are now visualized when they do not match the standard image coordinate system.
      • All parts of multi-part EXR images are now loaded by default. To load only a single part, specify it in the channel selector as :partname[.layername[.channelname]].
      • EXR images with non-sRGB chromaticities are now displayed correctly.
    • tev can now display HDR content on supported displays when running macOS by rendering through Metal rather than OpenGL.
    • tev can now open DDS images (DirectX textures; BC1-BC7) on Windows.
    • tev can now be remote-controlled through Python and Rust.
    • Secondary tev instances now become primary when the previous primary instance is closed. This means: newly opened images will always appear in an already opened tev window if one exists.
    • Starting tev without any command line arguments will now always launch a new instance of tev, even if another one is already open.
    • Improved tev's support for content scaling as seen on e.g. retina and ultra-high-res displays. tev can not be dragged across multiple monitors with different content scale and still render at the correct size.
    • Improved tev's behavior upon opening in full screen mode. There is no longer any flickering.
    • Fixed a rare crash upon closing many images in quick succession.
    • tev no longer depends on the Eigen library.

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built binary for macOS
    • Pre-built backwards-compatibility binary for macOS pre-Catalina
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-pre-catalina.dmg(2.50 MB)
    tev.dmg(2.50 MB)
    tev.exe(5.28 MB)
  • v1.17(Feb 14, 2021)

    Changes Since Last Release

    • tev's remote control functionality and IPC now run over the TCP protocol (as opposed to UDP) to increase reliability and speed.
    • As a direct consequence, tev now supports remote updating of arbitrarily large image tiles and of multiple channels at once.
    • PFM images with an alpha channel can now be loaded (PF4 format).
    • On Windows, tev can now load images from network shares, i.e. paths that start with \\.

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built binary for macOS
    • Pre-built backwards-compatibility binary for macOS pre-Mojave
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-pre-mojave.dmg(2.18 MB)
    tev.dmg(2.18 MB)
    tev.exe(4.75 MB)
  • v1.16(Jun 2, 2020)

    Changes Since Last Release

    • tev can now be remote-controlled by other applications (defaults to localhost only).
      • Opening of images
      • Closing of images
      • Reloading of images
      • Creating empty images
      • Updating content of images

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built binary for macOS
    • Pre-built backwards-compatibility binary for macOS pre-Mojave
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-pre-mojave.dmg(2.20 MB)
    tev.dmg(2.20 MB)
    tev.exe(4.75 MB)
  • v1.15(Mar 10, 2020)

    Changes Since Last Release

    • Images can now be reordered by dragging them in the list (thanks to contributions from Wouterdek #99 ).
    • Displayed channels are now grouped in a smarter way that goes beyond OpenEXR layers (addressing #92 ).
    • Images can now be pasted into tev from the clipboard.
    • Images can now be saved as OpenEXR (only RGBA).
    • Alpha blending is now done in linear color space (was sRGB before).
    • The false-color tonemapping mode now uses Google AI's Turbo colormap (was Viridis before).

    Released Files

    • Pre-built binary for Microsoft Windows
    • Pre-built binary for macOS
    • Pre-built backwards-compatibility binary for macOS pre-Mojave
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-pre-mojave.dmg(2.16 MB)
    tev.dmg(2.16 MB)
    tev.exe(4.70 MB)
  • v1.14(Feb 6, 2020)

    Changes Since Last Release

    • Added the ability to copy the current image to the clipboard (with tonemapping etc. applied).
    • Added a zoom-percentage display to the title bar.
    • Added raw pixel bytes to the title bar.
    • Holding alt while zoomed in now displays the raw pixel bytes.
    • Holding ctrl/cmd while zooming or panning now increases the effect.
    • Zooming via middle-click-drag now maintains a target position rather than following the cursor.
    • Fixed incorrect handling of pre-multiplied alpha in OpenEXR images.
    • Fixed erroneous pixel values when zooming in on single-channel images.
    • Fixed erroneous loading of very small files.
    • Improved error messages when loading of images fails.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS Mojave and upwards (supports dark mode)
    • Pre-built binary for legacy macOS versions (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.31 MB)
    tev-mojave-and-up.dmg(2.12 MB)
    tev.dmg(2.12 MB)
    tev.exe(4.72 MB)
  • v1.13(May 18, 2019)

    Changes Since Last Release

    • During reference comparisons, one can now hold "shift" to see and adjust the reference image.
    • Image filenames can now be supplied via standard input (e.g. through a pipe on unix).
    • Long paths (more than 260 characters) are now supported on Windows.
    • PGM and PPM images can now be opened (addresses https://github.com/Tom94/tev/issues/65).
    • Press "Ctrl/Cmd+Shift+W" to close all images at once (via https://github.com/Tom94/tev/pull/67 by Merlin Nimier-David).
    • Channels are now ordered according to the channel selector if one is used (addresses https://github.com/Tom94/tev/issues/68).
    • Fixed sporadic crashes upon closing and switching between images (addresses https://github.com/Tom94/tev/issues/69 via https://github.com/wjakob/nanogui/pull/341 by Christopher Patton).

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Pre-built binary for macOS Mojave (supports dark mode)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.22 MB)
    tev-mojave.dmg(2.07 MB)
    tev.dmg(2.07 MB)
    tev.exe(4.60 MB)
  • v1.12(Dec 4, 2018)

    Changes Since Last Release

    • CRLF-encoded PFM images can now be loaded. (thanks to gargll #60)

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Pre-built binary for macOS Mojave (supports dark mode)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.27 MB)
    tev-mojave.dmg(2.07 MB)
    tev.dmg(2.07 MB)
    tev.exe(4.67 MB)
  • v1.11(Jul 2, 2018)

    Changes Since Last Release

    • The gamma value can now be adjusted when using the gamma tonemapping mode.
    • Added an additional binary file for macOS Mojave users which supports dark mode (by being compiled with the latest SDK).

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Pre-built binary for macOS Mojave (supports dark mode)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.26 MB)
    tev-mojave.dmg(2.07 MB)
    tev.dmg(2.07 MB)
    tev.exe(4.67 MB)
  • v1.10(May 23, 2018)

    Changes Since Last Release

    • Memory occupied by closed images is now being freed again.
    • Fixed various bugs with single-channel images, especially if that single channel is an alpha channel.
    • Added PFM format to the open-file UI dialog.
    • Improved console output.
    • Vastly improved command-line interface.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.26 MB)
    tev.dmg(2.06 MB)
    tev.exe(4.67 MB)
  • v1.9(Apr 18, 2018)

    Changes Since Last Release

    • Added support for opening PFM-formatted HDR images.
    • Added credits for the latest dependencies to the "About" section.
    • Sped up loading of images.
    • Fixed undefined behavior when supplying invalid UTF-8 file paths.
    • Fixed incorrect scroll of layer selection when cycling images.
    • Fixed broken wildcard expansion on the Windows command line.
    • Fixed broken handling of spaces on the macOS command line.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.13 MB)
    tev.dmg(2.02 MB)
    tev.exe(4.49 MB)
  • v1.8(Apr 13, 2018)

    Changes Since Last Release

    • Fixed sporadic crashes when starting tev on Windows. (caused by a bug in GLFW)
    • Fixed various problems with file names containing unicode characters.
    • Fixed a problem with spaces in file names when starting tev from the command line on macOS.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.12 MB)
    tev.dmg(2.02 MB)
    tev.exe(4.48 MB)
  • v1.7(Apr 11, 2018)

    Changes Since Last Release

    • Added the -n command-line flag for opening multiple windows of tev simultaneously.
    • Images can now be filtered with regular expressions.
    • Fixed a crash when inspecting layers containing just an alpha channel.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.11 MB)
    tev.dmg(2.01 MB)
    tev.exe(4.47 MB)
  • v1.6(Nov 9, 2017)

    Changes Since Last Release

    • Added playback controls. HDR image sequences can now be played back at a chosen framerate.
    • Added zoom functionality via the Plus and Minus buttons.
    • Zooming and panning can now be more fine-grained by holding Shift.
    • Pressing Cmd+C/Ctrl+C now copies the path to the currently selected image into the clipboard. (Thanks, @tvogels!)
    • The background color can now be changed on-the-fly in case the transparent backdrop is undesired.
    • Fixed broken application shortcuts on free-desktop environments (such as Unity, Gnome, KDE) when tev is installed to a custom directory.
    • Fixed slightly incorrect rounding when writing to low dynamic range (LDR) images.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.14 MB)
    tev.dmg(1.99 MB)
    tev.exe(4.60 MB)
  • v1.5(Sep 30, 2017)

    Changes Since Last Release

    • Various small improvements to histograms.
      • The histogram now visualizes density in linear space despite having a logarithmically-scaled x-axis.
      • Fixed the far left and right edges of the histogram being invisible.
      • Added a shadow to the histogram labels to aid readability.
      • Histograms are now computed significantly faster.
    • When loading low dynamic range (LDR) images, they are now promoted to HDR via the reverse sRGB conversion rather than the inverse gamma power conversion.
    • Added support for HiDPI scaling in KDE (kudos to Delio Vicini).
    • The pixel value overlay is now faded out when zooming in too far to hide an underlying text rendering issue of nanovg.
    • Made the released macOS binaries backwards compatible with 10.9 (Mavericks) rather than 10.12 (Sierra).
    • Fixed compilation with CMake version smaller than 3.1 on unix systems.
    • Fixed installation of the icon on macOS.
    • Fixed two possible crashes.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.09 MB)
    tev.dmg(1.96 MB)
    tev.exe(4.54 MB)
  • v1.4(Sep 21, 2017)

    Changes Since Last Release

    • Images can now be saved to disk.
    • A histogram of image colors is now displayed. (Don't worry; performance did not degrade; everything happens in the background! 🎉 )
    • macOS binaries are bundled for the first time.
    • tev now has an icon on all supported platforms.
    • On macOS, tev now builds an entire app bundle instead of a single binary file. When installing tev via make install a smart symlink in /usr/local/bin is created such that tev can still be used from the command line.
    • On Linux, tev is now registered as an application upon make install.
    • Various little bugfixes.
    • A bit of polishing.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Pre-built binary for macOS (64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(4.04 MB)
    tev.dmg(1.98 MB)
    tev.exe(4.46 MB)
  • v1.3(Sep 16, 2017)

    Changes Since Last Release

    • Added support for non-integer display scaling factors on Windows; the interface is no longer too small when running tev on certain high-resolution setups.
    • Highlight the differences of opened image paths. Images whose paths largely coincide and only differ in a small part are now significantly easier to distinguish.
      • Enabled by the above change: The full absolute path is now displayed for all open images.
    • When tev is already running, opening additional instances of tev now results in their input being passed to the already-running instance.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(3.82 MB)
    tev.exe(4.19 MB)
  • v1.2(Sep 12, 2017)

    Changes Since Last Release

    • Fixed sometimes misaligned pixels when comparing images with different resolution.
    • On Windows the console is no longer automatically hidden if it is not owned by tev.
    • Improved performance while loading many images at once.
    • Made the sidebar resizable.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(3.81 MB)
    tev.exe(4.18 MB)
  • v1.1(Sep 10, 2017)

    Changes Since Last Release

    • Fixed potential aliasing artifacts when viewing images at their native resolution.
    • Now only C++11 instead of C++14 is required for building tev.
    • Improved the build process with Visual Studio on Windows.
      • Dependencies are now grouped within a subfolder.
      • The tev project is automatically selected as startup project (requires CMake >= 3.6).
      • CMake no longer needs to be invoked twice before linker settings are correctly applied.
    • Added CI build systems for Linux (GCC 4.8), macOS (Clang), and Windows (Visual Studio 2015 Win64).

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(3.81 MB)
    tev.exe(4.18 MB)
  • v1.0(Sep 9, 2017)

    tev — The EXR Viewer

    A high dynamic range (HDR) image comparison tool for graphics people. tev allows viewing images through various tonemapping operators and inspecting exact pixel values. Often, it is important to find exact differences between pairs of images. For this purpose, tev allows rapidly switching between opened images and visualizing various error metrics (L1, L2, and relative versions thereof). To avoid clutter, opened images and their layers can be filtered by keywords.

    Read more in the project readme.

    Released Files

    • Pre-built binaries for Microsoft Windows (32-bit and 64-bit)
    • Source code of tev excluding submodules. If you would like to build tev from source, please follow the build instructions in the project readme instead.
    Source code(tar.gz)
    Source code(zip)
    tev-32bit.exe(3.81 MB)
    tev.exe(4.17 MB)
Owner
Thomas Müller
Passionate about advancing the field of ML. Also loves computer graphics, audio, and software engineering.
Thomas Müller
A Cross-Platform(Web, Android, iOS) app to Generate Faces of People (These people don't actually exist) made using Flutter.

?? ?? Flutter Random Face Generator A flutter app to generate random faces. The Generated faces do not actually exist in real life (in other words you

Aditya 94 Jan 3, 2023
《Graph Optimization Approach to Range-based Localization》; UWB localization

This is modified from localization . Thanks for his work for uwb localizaiton. 代码1:https://github.com/qxiaofan/awesome-uwb-localization 代码2:https://gi

3D视觉工坊 35 Dec 2, 2022
Marking up images for use with Darknet.

What is DarkMark? DarkMark is a C++ GUI tool used to annotate images for use in neural networks. It was written specifically to be used with the Darkn

Stéphane Charette 90 Dec 26, 2022
UAV images dataset for moving object detection

PESMOD PESMOD (PExels Small Moving Object Detection) dataset consists of high resolution aerial images in which moving objects are labelled manually.

İbrahim Delibaşoğlu 37 Jan 2, 2023
A lightweight version of OrcVIO that uses monocular images, inertial data, as well as bounding box measurements

OrcVIO-Lite About Object residual constrained Visual-Inertial Odometry (OrcVIO) is a visual-inertial odometry pipeline, which is tightly coupled with

Sean 26 Oct 27, 2022
Android example to get the rgb and disparity images from the OAK-D device connected to a phone.

depthai-android-jni-example (WIP) Android example to get the rgb and disparity images from the OAK-D device connected to a phone. DepthaiAndroidFast.m

Ibai Gorordo 30 Nov 27, 2022
Dense Depth Estimation from Multiple 360-degree Images Using Virtual Depth

Dense Depth Estimation from Multiple 360-degree Images Using Virtual Depth [Project] [Paper] [arXiv] This is the official code of our APIN 2022 paper

null 8 Nov 7, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20.2k Dec 31, 2022
Tensors and Dynamic neural networks in Python with strong GPU acceleration

PyTorch is a Python package that provides two high-level features: Tensor computation (like NumPy) with strong GPU acceleration Deep neural networks b

null 61.4k Jan 4, 2023
DyNet: The Dynamic Neural Network Toolkit

The Dynamic Neural Network Toolkit General Installation C++ Python Getting Started Citing Releases and Contributing General DyNet is a neural network

Chris Dyer's lab @ LTI/CMU 3.3k Dec 31, 2022
InsNet Runs Instance-dependent Neural Networks with Padding-free Dynamic Batching.

InsNet documentation InsNet (documentation) is a powerful neural network library aiming at building instance-dependent computation graphs. It is desig

Chauncey Wang 62 Jan 3, 2023
Finds static ORB features in a video(excluding the dynamic objects), typically for a SLAM scenario

static-ORB-extractor : SORBE Finds static ORB features in a video(excluding the dynamic objects), typically for a SLAM scenario Requirements OpenCV 3

null 4 Dec 17, 2022
Anomaly Detection on Dynamic (time-evolving) Graphs in Real-time and Streaming manner

Anomaly Detection on Dynamic (time-evolving) Graphs in Real-time and Streaming manner. Detecting intrusions (DoS and DDoS attacks), frauds, fake rating anomalies.

Stream-AD 696 Dec 18, 2022
BladeDISC - BladeDISC is an end-to-end DynamIc Shape Compiler project for machine learning workloads.

BladeDISC Introduction Overview Features and Roadmap Frontend Framework Support Matrix Backend Support Matrix Deployment Solutions Numbers of Typical

Alibaba 517 Jan 4, 2023
A powerful and versatile dynamic instrumentation toolkit.

MIGI Migi(My Ideas Got Incepted) is a powerful and versatile dynamic instrumentation toolkit. How it works By injecting Python scripts into target hos

nomads 5 Oct 22, 2022
Dynamic AABB trees in C++ with support for periodic systems.

AABB.cc Copyright © 2016-2018 Lester Hedges Released under the Zlib license. About A C++ implementation of a dynamic bounding volume hierarchy (BVH) u

Lester Hedges 279 Dec 28, 2022
A pytorch implementation of instant-ngp, as described in Instant Neural Graphics Primitives with a Multiresolution Hash Encoding.

torch-ngp A pytorch implementation of instant-ngp, as described in Instant Neural Graphics Primitives with a Multiresolution Hash Encoding. Note: This

hawkey 1k Jan 6, 2023
a generic C++ library for image analysis

VIGRA Computer Vision Library Copyright 1998-2013 by Ullrich Koethe This file is part of the VIGRA computer vision library. You may use,

Ullrich Koethe 378 Dec 30, 2022