I have color calibrated a 5K+ with a probe (long technical article about HMD color calibration)

transp

INTRODUCTION

First I have to tone down your possible expectations: unfortunately you won’t be able to use such color calibration with games with the current pitool.
However you will able to use it for viewing pictures and watching videos/movies.
Using such calibration with games could become possible if Pimax was adding ICC profile support to pitool.
I have asked for that many times in the past and I hope what will be shown below will make the Pimax community support the request of adding such support to pitool !

Secondly, if you are reluctant to read long technical posts and prefer to have a quick overview of the results of this calibration you can scroll down to the samples I provide further down this post :wink:
But if you do this please read the disclaimer you will find just above those samples at the end of this post, so you don’t misinterpret them.
I still recommend you to read the technical part below as it will help you to interpret the samples provided at the end.

Regarding the technical part below, I’m not a pro nor an expert with color calibration, just a hobbyist who has learned by himself by practicing and reading technical literature.
If you are expert and notice some mistakes feel free to correct me of course :slight_smile:
I have tried to be not too technical so people with no knowledge at all can maybe learn useful things for when they may want to do their own calibration for their own displays (like their own headset).

Finally, as another disclaimer, please note the figures below only concern this headset sample and the “relatively cheap” colorimeter used is not as precise as more professional (and much more expensive^^) tools. Colorimeters can also drift over the years and may have to be recalibrated to be able to continue giving accurate readings. However the final result I have obtained was pleasant enough to my eyes to decide to publish these results here.

So let begin with an overview about how much the colors of this 5k+ sample can be improved :slight_smile:
transp

COLOR CHECK

colorCheck

Color checker is a feature of the calibration software showing requested colors (by your game for example) and displayed colors (by your VR headset).
The requested color is known (by the software requesting it. Here, the calibration software), and the displayed color is “captured” by the probe of the colorimeter (I1 display Pro here).

Requested colors are at the right side, displayed colors at the left.
The number for each color is called ∆E (delta E).
There is a lot of literature about ∆E because you can calculate it with different formulas giving more or less accurate results.

To try to make it simple, the lower this number, the closer is the displayed color from the reference.

Also typical ranges for our purpose (watching movies, looking at pictures, playing games) are:
∆E between 1 and 2 = very good (difference between requested color and displayed color will be subtle for most people)
∆E between 2 and 3 = good
∆E between 3 and 5 = more or less acceptable
∆E above 5 = begins to be problematic for people who cares about color accuracy

Click here to read a deeper analysis

As you can see the colors of this 5K+ sample are noticeably off with the default settings.
You may have noticed a blue tint, especially if you look at the few grays requests at the end of this chart.
You may also see some greens are too yellowish, which will result in some grass/foliage in your games/pictures/movies look unnatural, sometimes almost fluorescent.

Due to other tests showing an excess of blue (we will see that below) I have decided to begin with playing with the RGB parameters offered in pitool.

Contrast parameter is modifying the “white level”, while brightness parameter modifies the “black level”.
Changing one or the other will also affect all the intermediate levels at a lesser degree, not only max (=white) and min (=black).

Using the main brightness/contrast controls will equal to adjusting this parameter for the three R, G and B channels simultaneously:
B-C%20all%20chan

But you can also use the pitool feature to change brightness/contrast on the 3 channels independently (R or G or B), which is what I have done here with the Blue channel:
B-C%20blue%20chan

I have first decreased Blue contrast by 1. This means the highest value of blue will be less. This will also decrease, at lesser degrees, all the intermediate values of blue between maximum and minimum. The further from maximum, the less this intermediate level will be decreased. This means brightest blue will be more affected than darkest blue. It would be the complete opposite if we had changed the brightness parameter instead of contrast.

You can notice how this simple change already removes a significant part of the blue tint in all colors. It is the most noticeable on the grays at the end of the above color chart.

I have then tried Blue contrast -2 but this was too much. The best value was between -1 and -2, which means having smaller increments in pitool for those contrast/brightness parameters would already have some benefits.

But there is another way to try to decrease the amount of blue at an intermediate value: play with blue brightness. So next I have stacked blue contrast -1 and blue brightness -1.
The result is even more accurate grays (we’ll talk below about what is our “target”). Some other colors are improved, while others become worse.

Finally the last chart in this slide show presents the result of the use of an ICC profile.
An ICC profile is made by the use of a colorimeter (hardware probe + software) that will test a given set of various colors (more than 100 here), collect the differences seen by the probe when capturing the colors displayed by the headset, and create an ICC profile (.icm file) to allow softwares using it to compensate for those differences (this means the software has to support color management).

Any software using that profile will then “intercept” the colors requested by the source (like a picture, a movie, but it could also be a game) and apply the modification needed so that the color displayed by the headset is as close as possible to the requested source color.

By my readings about color calibration it seems a color profile will achieve better results when it has the minimal work to do.
This is why I have done this final calibration step starting from the Blue contrast and brightness -1 from the previous steps, and not from the 5k+ with default parameters.

As you can probably see the final result is MUCH closer to the “target”.
Also the last step (ICC profile) has much more influence than what was achievable by only using the current pitool parameters.

The result of this calibration is much more natural colors on the several pictures or movies I have tested (see samples at the end of this tech part).
Grass and foliage colors is the most visible improvement for me (no more fluorescent green), but also blue sky, flowers, wood, stone etc. Everything looks more natural.

transp

RGB RESPONSE

RGB%20response

Let continue with an easy one. This one shows the response for R, G and B channels from 0 to 100% levels.
The dotted line is our target (more about the target in the next paragraph).
You can easily see how blue levels are exaggerated by default, and it gets more and more exaggerated as you increase in level (= on brighter areas of images).

Click here to read a deeper analysis

Blue contrast -1 already does a great job to fix this, regrouping the blue curve with the R and G ones that were already closer to the target (dotted line).
Note how modifying the blue channel also slightly affects the other 2 channels. You must keep this in mind when doing calibrations by using the parameters from the display (here, pitool parameters).

Adding blue brightness -1 makes the blue line even closer to the dotted line target and regroups even more the 3 channels lines there.

Looking at this chart alone one may conclude adding the -1 blue brightness gives a better result than -1 to blue contrast alone but this is not necessarily true. We have seen the former was resulting in better grays (in the color check section above), but some colors were also becoming worse, and we’ll see other aspects below that we are not aware of yet with the informations we have examined so far.

Again here, the ICC profile step is what produces the most accurate result as it regroups the 3 RGB lines over the dotted target line, with all now also nicely following the curvature of this reference line.

transp

CHROMATICITY DIAGRAM

CIE

This one is a bit more complex but extremely helpful for checking your calibration steps when doing incremental modifications on parameters from the display you are calibrating.

We see a RGB color space (the whole colored area) with a black triangle limiting a more restricted color space (here, sRGB color space) and a white triangle showing the colors this 5K+ sample can display with its current parameters (this range of colors is called its “GAMUT”).

sRGB is the color space used for all games and is also similar to the rec.709 color space used for HD videos.
This is why I chose this as our “target” for calibrating this 5K+.

Click here to read a deeper analysis

Before I continue let define a bit more this “target”.
We have just said it will correspond to the sRGB color space, but it will also be defined by:

  • a white temperature (in Kelvin)
  • a gamma (no unit for this value)
  • a maximum white luminance (cd/m²)

The maximum white luminance will just be the max the headset can do (we could have decided to limit it with this ICC profile).
We’ll deal with gamma in a later step.
The white temperature target is 6500K (also called D65). This is the white temperature at midday (sun high in the sky), without clouds, at northern Europe latitudes.

On the chart you can see a black curve in the middle of the black/white triangles: this represents the white color at different temperatures.
With a high temperature the white (and the whole colors of the displayed image) will become “colder”, and a lower temperature will make the white warmer.
Following this line it is easy to see white will drift toward blue for cold temperatures and toward red for warm temperatures (first yellow, then orange).
Note color temperature is a matter of taste. For example I often use temperatures lower than 6500K for my desktop monitor because it saves my eyes (less blue).

White is made of the addition of the 3 primary colors (R,G and B).
There are also 3 secondary colors: Cyan, Magenta, Yellow.
Secondary colors come from mixing 2 primary colors. For example, Cyan is the result of Blue+Green.

In the chart you can see points and squares for each primary and secondary colors.
The goal, you will guess it, is to match the points (= our 5K+ measurements with the color probe) with the squares (= reference values for our current target).
The squares represent specific saturations levels for the 3 primary and secondary colors. Those saturation levels are: 0%, 25%, 50%, 75% and 100%.

Two kinds of problem can occur:

  • the points are forming a line not aligned with the line made by the squares → this means the color itself is not accurate, it is drifted toward nearby colors in the color space.
  • the points are aligned with the lines made by the squares but are too far or too close from the center point → this means there are saturation errors.

As you can notice, the whole 6 lines (from 3 primary and secondary colors) are crossing each other at the white point.

Now look what happens between the default settings chart and the next one (corresponding to me just applying -1 to blue contrast in pitool): this simple parameter change in pitool makes the white temperature drift toward a warmer white.

As the 6 lines are crossing at this white point, this means those also a move to follow the new white temperature.

This is not all, you don’t see it on the chart but the whole colors (from the 5K+ GAMUT) are in fact moving too ! If we had many other points from various colors captured by our probe, all those would move too to follow the movement of the lines. Imagine this as a fabric, you pull the middle point and the whole fabric is stretched, with any point of this fabric moving to another place.
transp
So let see what we can conclude about this 5K+ sample at the default settings:

First, several colors are not aligned with the lines formed by the squares.
While Blue and Yellow are well aligned, Red and Cyan are moderately misaligned, and Green and Magenta are significantly misaligned.

For green for example, this means when a game will request a 100% saturated green (green square at the top edge of the black triangle) the headset will display a green drifted toward yellow (the top green point, outside of the sRGB color space represented by the black triangle).

For Yellow the color tone is correct but the saturation is not: when a game will ask a 50% saturated yellow (yellow square located above the 4000 figure) it will display a Yellow closer to 25% saturation (yellow square at the top right of the 5500 figure).

With the 3rd chart in the slide show, where Blue brightness -1 was added to Blue contrast -1, the whole lines are moving again and the placement of the points (alignment with square lines and square holes) gives you a quick overview to compare if adding -1 to blue brightness really brings an overall improvement over just modifying blue contrast alone to -1.

As with the color charts from the beginning, we can see here some colors become more accurate but other colors are getting worse, and it is easier to understand with this chart “where things are going wrong” compared to random colors checks (and thus, what other parameter(s) we could modify to try to fix the remaining problems).

Lastly, we see again the ICC profile is what brings the most accurate result, with all 6 lines well aligned with squares (only magenta remains a bit misaligned) and many points standing into their respective square meaning good accurate saturations. There are still some saturations “off” and you easily see which ones and what kind of imperfections it will make in displayed picture. For example we can conclude even with this ICC profile colors around red color will still most often be over-saturated. Reading through the web I have seen comments saying the software I have used for this calibration may have this issue with the red channel, so I will try again with other softwares later.

transp

TEMPERATURE

colorTemp

After the more complex chromaticity diagram, back to a more simple one.
This one is important to understand temperature is not a unique value but can vary between dark and bright areas of the displayed image.
Of course the goal is to have a flat line here. This would mean you would keep the same color temperature for dark and bright areas of images (or dark images VS bright images, dark game environments VS bright game environments, dark movie scenes VS bright movie scenes).

Click here to read a deeper analysis

Here are white temperatures I have obtained with some pitool settings I have tried:

  • default settings: 8650K (relatively cold, blue tint)
  • blue contrast -1: 7000K (already much warmer, way less blue tint)
  • blue contrast -2: 6000K (a bit too warm compared to the 6500K target but I would personally be perfectly ok with this temperature)
  • blue contrast -3: 5350K (significantly warmer compared to the 6500K target, but it would still be fine for my taste)

Contrast -2 was tempting at first, because this setting also makes this 5K+ sample produce the best primary Blue color (∆E=1.3, compared to 3 for blue contrast -1, and 6 for default settings).
But as most often in calibration everything is a matter of trade-offs and -1 was giving a better overall result.

Back to the temperature chart slide show, you can see that in addition to making the temperature warmer the blue contrast -1 modification also produces a flatter temperature line, meaning a more steady temperature between dark and bright areas/images compared to the default settings.

Then on the 3rd chart, after I have added -1 to blue brightness, we see the left side of the curve is diving into warmer temperatures.
This is the result of decreasing the blue “black level” (brightness -1). This means there will be less blue in dark areas of displayed images, which results in warmer temperature there.

Finally, we can notice the ICC color profile doesn’t add much to the temperature accuracy and more importantly it doesn’t fix the dive of the curve into warmer temperature for dark areas.
I have only noticed the latter as I was writing this post. If I had noticed that at the time of doing the calibration maybe I would have done the ICC profile over -1 blue contrast rather than over -1 blue contrast+brightness.
This seems to confirm it is better to make the display the most accurate using its internal settings before creating the ICC profile on top.

transp

GAMMA

gamma

Gamma sorts of modifies the contrast of the display.
Lower values will make the image brighter but also more flat, lacking 3D depth and making colors dull.
Higher values will make color more vivid, add contrast, and the result will be a gain in 3D depth too. But if you go too high you may lose details in dark areas.

Click here to read a deeper analysis

As temperature, gamma is a matter of taste. There are no good or bad values, you must try and keep what you prefer.
Most PC LCD monitors use a 2.2 gamma by default (1.8 on mac). 2.2 gamma is also very often used by people calibrating their TV for watching movies.

Here is a picture from eizo website showing gamma 2.2 (left) VS 1.8 (right):

eizogamma

For VR gaming you could even prefer one value for a specific game and another value for another game, depending on the type of game, the artistic choices made by the creators etc.
This means that if you buy a colorimeter to create ICC profiles you may not only do a single profile for your headset but several ones as they are another method to tweak games to “fix” artistic decisions you may dislike (as can be done with directX injectors).

With this 5K+ sample the gamma with the default headset settings is about 1.9
Modifying blue contrast to -1 has almost no effect on this gamma.
Adding blue brightness -1 drifts the whole gamma curve up a bit.
The ICC profile has the most significant change to the gamma curve.

Note I thought I had set the calibration software to make the ICC profile with a 1.9 gamma target, as I wanted to try to stay close to the default gamma to limit the work of this profile, but it seems the profile was created with a gamma target of 2.2 (I’ll need to investigate why).

transp

This is all for the technical part, now let have a look at the result in “real conditions” :slight_smile:

transp

SCREEN PANEL PICTURES BEFORE/AFTER CALIBRATION

// DISCLAIMER //

I have been wondering if I should publish such pictures as to be able to show the result of a calibration the whole chain should have to be calibrated, from my camera to your monitor display.
This will not be the case here but I have tried anyway as I wanted to check what kind of result I would get when watched on my own gaming (but calibrated) monitor.

I have thought the result was interesting enough to publish the pictures but keep in mind they won’t reflect the exact result of the calibration as seen directly in the calibrated headset.
However you should be able to see the tendency the calibration has, especially the fact it significantly decreases the blue tint (warmer color temperature).

If you have a good factory calibration on your monitor the calibrated 5K+ pictures should even look close to a relatively good 6500K calibration but keep in mind there will still be drifts from the camera taking the pictures.
Compared to how the pictures looks on my calibrated monitor, the result is better when watching directly at the calibrated headset.

Also note pictures of the calibrated headset may lose some dark details. This is due to the 2.2 gamma calibration compared to the 1.9 original gamma (I have explained in the tech part above my initial intention was to calibrate at 1.9 gamma but the calibration software did a 2.2 calibration for some reasons).

////////////////

pic1

On this first picture we can see the improvement of the green pcb that looks less “flashy-green”.
Skin tone is also better, losing the original cold tone (blueish skin).
With a good monitor you should also see the grays become warmer, like the gray ribbon at the top of this electronics, or at the grayish background.

transp
picgame

This second one shows what you could expect with games.
The improvement may seem less significant there to some people, due to the fact games often use very saturated colors.
The grass is improved but not as much as it can be on some pictures or movies. This will heavily depend on the green color used in the game, other green will have more significant improvements.
The blue of the car also seems only slightly improved but it is much closer to how I have designed this car (I’m not the author of the original design but did this skin myself). With the 5k+ at default the car looks like if the blue is “lit”, like neon-blue, whereas the calibrated 5K+ looks more like a metallic blue paint lit by the sun.
The most significant improvement here is the concrete. I am personally really worried when concrete from racing tracks look “too blue” like with the default 5K+ calibration. After calibration it looks “more red” as I’m used to see in real life.
transp
picmovie

I find this still image from a movie shows the most significant overall improvement. Many aspect are improved like skin tone, foliage losing its blueish-green tint, blond hairs more vivid (lips too), orange panels much more vivid and really orange, buildings at the background get a much more natural color, and I find the 3D depth of the image is improved and overall contrast is better (thanks to the 2.2 gamma here).
transp

While the 3 above pictures were displayed by a photo editing software that was applying the ICC profile, this last example is from a movie played with a video player (more about softwares below).
I have added that one to show movies/videos can also already benefit from a calibration profile, without any required support from pitool.
I am so pleased when I activate the support of the ICC profile while a movie is currently playing. The improvement is so much welcome to me who likes to watch movies one a calibrated plasma TV.
More depth, good color temperature, good color accuracy. The result is very good and only the poor black level remains as a drawback from the LCD panels (calibration can’t help with that).
In the sample above you can see improvements in stone color, flowers, foliage, skin tone, building glasses, or some clothes too.
transp
As a conclusion, this shows the 5K+ image quality can be significantly improved (at least concerning this sample). Color accuracy has gone from average by default to very good once calibrated. Gamma can also be fine tuned to optimize the viewing of movies, pictures or to play games. I really wish Pimax will add support of ICC profiles to pitool so it can apply to everything and not only pictures ans videos. From what I have read this is done using 3D LUT processed by the graphic card. This more recent method has a much smaller impact on performance compared to doing it with the CPU as was done before (I have read from a video player developer that when the CPU does it you can’t play a HD movie smoothly anymore).

transp

SOFTWARE INFORMATIONS

The characterization of this 5K+ (all the charts from the tech part above) was made using HCFR calibration software, a free software made by French video forum members.
The ICC profile was made using X-Rite I1 profiler (the software bundled with the X-rite I1 display pro colorimeter probe). I should try again soon using DisplayCAL this time.

The pictures are displayed using paint shop pro 2018 (you can do it with photoshop too and I have read other picture softwares can use ICC profiles too. I haven’t checked the free ones yet).
Here is where you apply the ICC profile with this editor:

transp
MPC-HC and potplayer are both able to apply ICC profiles to videos. I have initially tried MPC-HC on my TV then Potplayer with the 5k+ headset (with which I have made the movie sample published above).

For both you must use EVR custom present renderer. MadVR renderer also supports 3Dlut but I have not tried to make that work yet.

Here is where you activate ICC support in potplayer (it will apply the default profile set for your monitor in windows, see below):

…and for MPC-HC (in the same menu, below, you can chose between 3 different gamma):

transp
And yes I will share the profile I have created for this 5K+ sample as I know people will ask for it, but keep in mind it may not give optimized results or even good results at all as panels can differ from one to another from the manufacturer production.

Even the same panel model can show differences and remember Pimax may have changed the panel manufacturer/model for the 5K+.

This ICC profile was made for a 5K+ with the serial number starting with 202 so people with 203/204 models may not have good results trying this profile.

It should be even worse if you try it with a 8K that is equipped with completely different panels than the 5K+, with warmer default colors. Ideally everyone should proceed to its own calibration of his own headset sample (which implies using a colorimeter probe).
transp

Click here for installation informations

transp

How to install:

1°) Download my ICC profile (5K+ - I1 profiler - 6500K - 2.2 gamma, despite it is named 1-9gamma): http://www.mediafire.com/file/ipribomt4ike5kj/5kplus_i1profil_nolensR_1-9gamma.icm/file

2°) Copy the .icm file to "C:\Windows\System32\spool\drivers\color" (there should be at least a sRGB profile there, this is the default one for windows)

3°) Open win10 oldschool color management in the oldschool control panel:

4°) In this win10 oldschool color management panel check “use my parameters for this device”, then “add”, then “browse” (in the new window that just opened), then select the profile you have downloaded. In the end it must show in the list in the first window (if not reclick “add” and select it in the list of the 2nd window).

5°) When right-clicking your desktop and selecting display parameters you should now have the color profiles enabled here (if grayed-out check you have ticked the checkbox in step4) and the 5K+ profile should be present in the list. Select it if needed.

Once there, video players will use this selected profile when you activate their color management feature (for pictures you need to manually select the profile in the editor as explained above).
Pictures or videos opened in those softwares will be sent to the headset using Virtual desktop (VR app).

transp

@Alex.liu Feature request Pitool.

23 Likes

INFORMATIONS ABOUT THE CALIBRATION PROCESS

The calibration process is made using Virtual desktop too.
The calibration software displays reference colors that will be read by the colorimeter probe.

Those reference colors can be displayed fullscreen, or with smaller patches, or fullscreen but with some information windows left depending on the calibration software, so you have to increase the size of the virtual screen in virtual desktop to the maximum to ensure the whole panel of the headset will be filled with this reference color, with nothing else that could bias the colorimeter probe readings. Also put the HMD in large mode in pitool to have the widest area filled on the HMD panel.

I have first tried to calibrate through the lens (putting the calibration probe onto the lens). I have created an ICC profile and watched the resulting improvement with a few pictures displayed in the 5K+ and colors already looked more natural. Now while it seems I was able to obtain a interesting result this way, I haven’t double checked this resulting profile with the HCFR software like I did above in the tech part. And when I load this profile onto my desktop monitor the color drift is much more pronounced than with the other profile I have made without the lens.

So I don’t think this first profile created through the lens can come close to the accuracy of the 2nd one made without the lens. When I have first tried through the lens it was obvious the location of the calibration probe onto the lens was significantly affecting the readings from the probe. Moving the probe a few millimeters was inducing big changes in the read values. I had to do a lot of tries to first find the best probe location, where the ∆E for primary colors were the best, and even then I couldn’t be sure some godrays or any other lens artifact weren’t interfering with the probe readings.

This is why I have jumped into removing a lens so that the probe can be placed over the flat separator protecting the panels from dust. The best would have been to put the probe directly onto the panel itself but this implies a risky tear down of the headset. Now, the result I have obtained seems to prove placing the probe over the protective separator is a good enough compromise to obtain a nice calibration profile. Also the colorimeter probe location was much less critical with the lens removed. I still took care to place it to the middle so it receives the maximum light to read (as there is a noticeable gap between this protecting separator and the panel) but I could move it around the center without getting significant changes in the probe readings.

If you wonder how to remove a lens, I have searched this forum and found useful infos about how to do it but it was not specified if the stretchable black fabric around the lens had to be removed or not. So if you wonder about that I can confirm it is not necessary. Also as already explained by others in this forum an easy way to remove the lens is to use a suction cut you place at the far end of the lens (near the nose) and pull up until the glue peels. It is some soft glue (like a mastic) located at the left and right extremity of the lens, so just pull on the suction cup with a constant force and wait until you feel the glue peels (if it doesn’t, then apply progressively more force, and check you have placed the suction cup the most near the lens extremity).

Here is a picture of the suction cup I have used, taken apart from a small mirror:

ventouse

Last thing about double checking the ICC profile with HCFR calibration software:

This software can’t “load” an ICC profile so you could check the result of it. Still this software lets you do that for a monitor or a TV as you can load the profile you want to check to windows and the correction will apply to the test colors displayed by the HCFR software.

Unfortunately when doing this the correction is not applied when passing through virtual desktop: the test colors are corrected on the monitor (by the ICC profile) but not into the HMD. So I have had to find a workaround.
The HCFR software has another mode in which the reference colors can be displayed manually, using a specific DVD, instead of having this automated by the internal color generator of the software.

So I have created a set of color patches that is a copy of all the colors used by HCFR software and I have used the photo editor software (paint shop pro) to display them manually with the ICC profile correction applied.

The process was then to prepare (in paint shop pro) the color I want to test, then click the button to start the probe reading and immediately alt-tab to paint shop pro displaying the corrected test color.
A bit more painful process but at least it worked.

The most boring part was to recreate this set of testing color patches so I have uploaded that for people who would have to follow this same procedure for their own calibration:

17 Likes

Added Alex.lui to your post for pitool feature request.

7 Likes

Respect and thx for this great work and for sharing all this interesting informations!

8 Likes

I can confirm @neelrocker findings :+1:
I have a Datacolor Spyder 3 Pro and have tried to use that with DisplayCAL and the color profile is much nicer. But we need a way to load the profile in the displays in the HMD.
I really really Really hope this will be implemented! in Pitool :wink: Think of how good reports of the 8KX have been, and how much better it will be with calibrated displays :grin::+1:This means a lot for black levels too!
I want to be able to load profiles in my 2 8KX’s and my 5K+ :smiling_face_with_three_hearts:

7 Likes

Great efforts! :+1: :slight_smile:

4 Likes

@neelrocker
I used DisplayCal to do my measurements and corrections.
VorpX Desktop in FullVr mode so the whole panel is utilized for the tests.

I have just been digging about ICC profile support for VR games:

The starting idea was “maybe injectors could do this”, so I have followed that path in my research.

It seems only ENB works for VR ( @mr_spongeworthy maybe you can confirm this, I know you are into this).
ENB doesn’t seem to support 3DLUT (=gpu-accelerated way to apply an ICC profile).

“But” it (really) seems Reshade does !
Unfortunately Reshade still seems not compatible with VR ( @mr_spongeworthy ?)

So instead of adding 3DLUT support to pitool, another way to add ICC profile support (=color management) would be that Pimax work with “crosire” (developper of Reshade) to make Reshade compatible with Pitool (with the additionnal bonus of all the other improvements Reshade would also bring to VR games in Pimax headsets).

I know crosire has already had a look at making Reshade compatible with VR in the past, when Oculus CV1 came out. He got a starting point but then cancelled the idea due to the complexity but this may be much easier for him if Pimax was working with him ?

@Alex.liu would it be possible Pimax help crosir to make Reshade work with Pitool ? Although 3DLUT support directly added to pitool may be more efficient (= less performance loss).


Here are some links about the discussions I went through to get there:


Finally some kinds of VR gaming “may” already benefit from ICC profile in VR:

I have not tried this yet, just reporting those findings I have just came across.

6 Likes

I think I’ll take the liberty to use this as an opportunity to reiterate my opinion that all developers should master for- and output BT.2020 (…or a VR-specific derivative thereof), future-securing their titles, and all VR drivers should include device-calibrated tonemapping, to deal with this. :7

(EDIT: I suppose it would probably be too much to hope for, that OpenXR would set any such standard…)

4 Likes

semi-offtopic: But it feels like there should be a smartphone app for color calibrating displays…

1 Like

Display Tester is an Android one

Great job, I was just thinking recently, that someone like rtings or tft central could start reviewing also vr headsets / displays.
I have 5k+ headset starting with 203, what is your estimation how I can get the best color accuracy without a calibration tool?
-Keep the default
-Lower the blue contrast and brightness -1
-Lower the blue contrast and brightness -1 + use of your ICC profile

1 Like

While no longer maybe that good. You might get reasonable results using an old DVD with THX optimizer.

We don’t know for sure what Pimax has done with the displays over the 202/203/204 iterations.
Some people in the forum who did a RMA reported “better colors” for their replacement with higher serial number.

But this is something hard to estimate by naked eye, especially if you cannot do a direct A/B comparison and are comparing with what you “remember” from your previous HMD sample.

Even how you do a direct A/B comparison is affecting the differences you manage to perceive by naked eye.
When I was trying to compare what I was seeing in the HMD with the same picture displayed on my monitor I first tried by removing back and forth the HMD from in front of my eye (to see the monitor behind).
Then I tried another method consisting in placing the HMD so that I can see half of the image in the HMD and the other half on the monitor at the same time, and I was able to see the differences much better.
So even if you are able to quickly swap between 2 HMDs it is not easy to precisely catch/describe the differences in colors.

This is why a color probe is mandatory to be really sure about what you are doing when trying to improve the default calibration.

Without that all we can say is if your HMD sample seems to have a cold temperature (blue-ish overall tone, whites looking too “pure clinical white”, orange tones looking muted/washed out) then -1 on blue contrast will already help a lot to get close to a more neutral color temperature (6500K).

Then you can also try the ICC profile I have provided (on top of -1 blue contrast in pitool) and see if the result is more pleasant to your eyes or not. Watch some movies and try to switch the video player color management option on/off (with the ICC profile set as default for your desktop monitor).

This is the best you can do without using a color probe to do the calibration of your own HMD sample. The probe will give you much better improvements than everything you could do using naked eye.

Before I have bought this probe I was doing naked eye adjustements (PC monitors, TVs) and I was thinking I was already achieving good results. But then after calibrating with a probe I realized there was still a huge improvement margin. I really don’t regret this investment, it benefits to all my PC monitors, my TVs, and now it could help with my VR HMD too (the 5k+ I have used for this calibration was from a friend, I still have to try with mine. And I still also have to try that probe with my CRT videoprojector, but it has a slightly burned blue tube).

3 Likes

transp

I1 Profiler VS DisplayCal

transp
I have been trying DisplayCal (another calibration software) and it wins hands down compared to I1 profiler (bundled with x-rite I1 display pro probe).

Ready for round 2 ?

transp

DisplayCal pre-calibration

DC_%20RGB%20precali

Click for detailed informations

This is a pre-calibration step in DisplayCal (I1 profiler has it too) where you try to make the best RGB balance with the settings from your device (here, Pitool settings).

As I was saying in the first post you can see here again the default 5K+ settings has too much blue.

Reducing blue contrast by 1 in pitool already makes a nice improvement.
Going to -2 is too much.
Stacking Blue contrast -1 and Blue brightness -1 is the best I can do to balance the RGB channels before launching the calibration process.

I have used this setting again for the final calibration so I can do a better comparison of the 2 calibration softwares.

I haven’t talked about that in the first post but you can also see here the maximum “brightness” of the panels is about 68cd/m² (could be a bit higher if the probe was placed directly on the panel).

I could get 70cd/m² by dragging the sensor a bit off-center, toward the outside of the lens, but the panels display a vertical yellow line at the extremity of the panel here, so I preferred to stay in the middle of the lens to make a more accurate color calibration.

Also if you want to know the black brightness, it is 0.17cd/m² (I got the same value with HCFR software, during my first calibration).

Here are the respective brightness levels for each contrast setting in pitool:
0 → 68.5 cd/m² (max)
-1 → 56 cd/m²
-2 → 45 cd/m²
-3 → 35 cd/m²
-4 → 26 cd/m
-5 → 18.5 cd/m²

transp

DisplayCal ColorCheck

DC_CC%20default%20vs%20b-1%20vs%20b-1-1

Click for detailed informations

This is one of the colorCheck test from DisplayCal.
It has this interesting last column showing charts for the ∆E of each tested color.

This slide show compares the default 5K+ settings (white brackground) with Blue contrast -1 (light gray) and Blue contrast & brightness -1 (darker gray).

We see similar results than during the calibration in the first post:
Playing with pitool settings will only let you improve the color temperature.
The impact on the color tones accuracy will be a mix of improvements and deteriorations.

This is well summarized by the figures in the introduction summary:
The ∆E for the whitepoint improves significantly after decreasing Blue contrast by 1 and improves again a bit more when you add blue brightness -1.
However the average ∆E remains relatively stable.

Real improvements on color accuracy using pitool settings alone (no ICC profile) would require more detailed settings than just R/G/B contrast/brightness.

transp

DisplayCal GAMUT

Click for detailed informations

This is how DisplayCal shows the device GAMUT (5K+ default settings).
It is rotated 90° to the left compared to the HCFR similar chart.

But we see the same things than after the first calibration:
The displays equipping this 5K+ have limitations in the saturated greens and the GAMUT goes beyond the sRGB colorspace in the yellow/red direction.

transp

HCFR ColorChecker: I1 profiler VS DisplayCal

colorCheck

No doubt DisplayCal really does a better job than I1 profiler, the resulting color in this test are close to perfect now ! (including grayscale)
Only Cyan tones (last in the first row) is a little behind other colors accuracy.

and I couldn’t resist making one showing the default 5K+ colors VS my best calibration:

colorCheck_default%20VS%20best

Do you want ICC profile support in Pitool ? :smiley:

transp

CIE chart:

CIE

Calibration made by 2 different softwares showing the exact same limitations for the 5K+ panels.
Also DisplayCal calibration fixed the issue I1 profiler had with the red saturations that are very good now.
The saturated blue are better too. and the magenta tones are better aligned with the square references.
transp

Color temperature

temp

Flatter temperature line across levels.

transp

Gamma

gamma
Slightly lower gamma compared to the I1 profiler profile, should help with dark details.
transp

RGB response:

RGB
transp

DOWNLOADS:

Profile

Here is a link to download this new ICC profile made with DisplayCal:

The profile was made with quality high, speed fast.
It has used 175 color testing patches + 32 saturation patches (the later was repeated twice)

The final result covers 87.7% of the sRGB colorspace. This means even if it makes the color tones of this 5K+ sample accurate we still lack displayable colors compared to what the game developper may have utilized in his game if he was using a monitor covering 100% of this colorspace.

Revised manual HCFR color set (if you do your own calibration)

If you have previously downloaded my manual color set for HCFR software, I have found 2 patches were wrong (grays 50 and 80 from colorCheck folder). I have uploaded a revised set here:

6 Likes

Sounds like about the same % I ended up with when I tried to calibrate through the lens with DisplayCAL.

Could be fun to compare those two profiles :slightly_smiling_face: will do that when I get some free time on my hands.

4 Likes

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.