RawTherapee icon indicating copy to clipboard operation
RawTherapee copied to clipboard

Suggestion: change zoom level steps and allow to manually set up the zoom level

Open mikkovedru opened this issue 2 years ago • 7 comments

Issues with zoom level steps

Currently, there are the following zoom steps and their percentage change compared to the previous step:

Zoom level Percentage jump compared to the previous level
1%
2% 100%
5% 150%
6% 20%
8% 33%
10% 25%
11% 10%
12% 9%
14% 17%
16% 14%
20% 25%
25% 25%
33% 32%
50% 52%
100% 100%
200% 100%
300% 50%
400% 33%
500% 25%
600% 20%
700% 17%
800% 14%
1600% 100%

Problem analysis

From here you can see how inconsistent the jumps are - some are huge (50 -> 100 -> 200; 800 -> 1600), some are small (600 -> 700 -> 800). pic1

The suggestion

The jumps should be within the certain minimum and maximum percentage change. Let's say the change should be at minimum 20-25% and at maximum 50%.

What I suggest is:

  1. remove the following steps
  • 11%
  • 12%
  • 14%
  • 16%
  • 700%
  • 800%
  • 1600%
  1. add the following steps
  • 1.5%
  • 3%
  • 4%
  • 15%
  • 75%
  • 133%
  • 150%
  • 175%
  • 750%
  • 1000%
  • 1250%
  • 1500%
  • 2000%

The final table

Zoom level Percentage jump compared to the previous level
1%
1.5% 50%
2% 33%
3% 50%
4% 33%
5% 25%
6% 20%
8% 33%
10% 25%
15% 50%
20% 33%
25% 25%
33% 32%
50% 52%
75% 50%
100% 33%
150% 50%
200% 33%
300% 50%
400% 33%
500% 25%
600% 20%
750% 25%
1000% 33%
1250% 25%
1500% 20%
2000% 33%

Much better! pic2

Allow to manually set up the zoom level

It was a bit of a shock to realize, that it is not possible to set my own arbitrary zoom level manually. I really expected to be able to click on the zoom level and set up my own numbers there like in many programs (Gimp, basic Gnome image viewer) and/or to have a slider like in the rest of the graphical programs (Gwenview).

  • Gimp: image
  • Gnome image viewer: image
  • Gwenview: Gwenview

Could we please have those (preferably both, so that there is an improvement for both keyboard and mouse users)?

mikkovedru avatar Aug 25 '22 00:08 mikkovedru

I just want to give some insight on why the current zoom levels jump like that (I'm not supporting the current behavior). Notice the percentages are nice, round numbers. Pixels won't be split when scaling up or down, which in theory results in a sharper preview.

I recall there was an issue or pull request for adding intermediate zoom levels for "zoom to fit". The preview is actually rendered at the next highest zoom level then down-scaled to the final size.

Lawrence37 avatar Aug 27 '22 01:08 Lawrence37

That can't be true.

  1. In the current version there are 7 (6%, 8%, 11%, 12%, 14%, 16%, 33%) percentages that are not "nice round numbers".
  2. Scaling algorithms don't work like that. It is not the first days of computing and we moved way past the Nearest-neighbor interpolation. Except that even NN wouldn't care about the neatness of division. And we have Lanczos and others. You can easily test by taking an image, transforming it into different sizes (from 1% to 200%), and animating it. You will not see any apparent quality jumps at the near numbers like 20, 25, and 50%.

The main point of the zoom level is to scale the image in size, so that it is perfect for the user - not too small (to see enough details), and not too big (inconvenient; doesn't fit on the screen). This is impossible to achieve with big jumps between hard-coded zoom levels. The 100% or 150% jump in between zoom levels can make the work practically impossible. Too small of the jump is also inconvenient, even though a much smaller problem compared to not having enough zoom levels.

mikkovedru avatar Aug 27 '22 21:08 mikkovedru

Invert them, then they are round ;)

Percent Ratio
100 1:1
50 1:2
33.3 1:3
25 1:4
20 1:5
16.7 1:6
14.3 1:7
12.5 1:8
11.1 1:9

This is a bit of an extreme example, but it demonstrates the softness at an intermediate scale step (71%). View the screenshots at 1:1.

50% 71% 100%
image image image

Lawrence37 avatar Aug 27 '22 22:08 Lawrence37

  1. So now we also figured out that the software is not showing the zoom level with the necessary precision. It shows 11, instead of 11.1. It shows 12, instead of 12.5. 14 instead of 14.3. 16 instead of 16.7. 33 instead of 33.3. Etc.

  2. How were you able to get the 71% scale?

  3. The pictures are misleading. I took your 100% image, decreased it to 50% and 51% in Gimp using different interpolation algorithms and zoomed to 200%.

  • No interpolation (so basically what rawtherapee is doing): 50% image 51% image

  • Linear 50% image 51% image

  • Cubic 50% image 51% image

Results:

  1. While, indeed, without interpolation the image is sharper in 50% than in 51%, with Linear it is the exact opposite - 51% is way sharper than 50%.
  2. There is basically no difference in image sharpness between 50% and 51% when using Cubic, which is the lowest interpolation one should use anyway. Using no interpolation or linear is just inadequate. Preferably even more advanced interpolations should be used like Lanczos or even use different ones depending on the situation (different algorithms depending on whether the image is enlarged or made smaller, and by how much).
  3. But the most important point is that looking at the sharp boxes in the image is misleading. What you should be looking at is the clarity of the interface text/images, because this is a much better representation of the images rawtherapee is processing and zooming. And there you can see a drastic change. No interpolation 50% is the worst. No interpolation 51% is much-much better. In Cubic there is no real difference between 50% and 51%. Just like I said there wouldn't.

mikkovedru avatar Sep 06 '22 22:09 mikkovedru

How were you able to get the 71% scale?

With "zoom to fit".

No interpolation (so basically what rawtherapee is doing)

It is not using no interpolation for zoom <100%. I have not looked at the code to confirm, but the evidence suggests it is using a simple average (pixel binning) which results in "perfect" downscaling when using whole scale ratios.

the sharp boxes in the image is misleading

Those were real, unedited screenshots, though I did choose the grid image to most clearly explain my point :wink:. But since you insist on inpecting the text...

If you compare the images you provided with one produced in RawTherapee, you will find that RawTherapee's is the sharpest of them all. Any other interpolation method at any other similar scale will not be as sharp. That's my original point. Below is an example to show that. On the left is the RawTherapee preview at 50% zoom. Next is bicubic interpolation done in GIMP. (Note that I scaled the image with the sRGB gamma instead of linear to be consistent with the RawTherapee editor preview. I can make a similar comparison in linear encoding if you think that matters.) For fun, the right image is Lanczos interpolation produced by RawTherapee. All images are scaled up 4x for clarity.

RawTherapee Cubic Lanczos
image image image

Lawrence37 avatar Sep 11 '22 00:09 Lawrence37

the evidence suggests it is using a simple average (pixel binning) which results in "perfect" downscaling when using whole scale ratios.

I can only repeat my words: "[RawTherapee should] even use different [interpolations] depending on the situation (different algorithms depending on whether the image is enlarged or made smaller, and by how much)."

The quality difference is relatively small in the images you provided, but if one wants to get perfection, then why not - I have no problem with RawTherapee using "perfect downscaling" if it fits the situation and gets the best result. But I think that this small gain in a specific situation is not worth it if it means that users can't get flexible zoom levels. Either RawTherapee should start utilizing the interpolation that works flexibly, or use a combination of interpolation methods if there is a will to optimize.

mikkovedru avatar Sep 11 '22 22:09 mikkovedru

I'll quote myself too ;)

I just want to give some insight on why the current zoom levels jump like that (I'm not supporting the current behavior).

Lawrence37 avatar Sep 11 '22 22:09 Lawrence37

I need more time to read, but

add the following steps 1.5% 3% 4% 15% 75% 133% 150% 175% 750% 1000% 1250% 1500% 2000%

is useless for me, i need the full precision between ~ 25-100%, because i am allways watching 1:1 and then just panning and zooming in and out between that. I will never zoom > 100% (thats not my need)

Btw... who needs 2000%? I have never worked >400%

ghost avatar Mar 02 '23 22:03 ghost

I think both views are worked out in great detail and, as always, everything is somehow right.

In the end, I would like to decide depending on the situation whether I want to zoom more in small steps or whether I need special sharpness.

I would even go so far as to say that the default should be set in the preferences and the behavior should be reversed with the "CTRL" key pressed.

ghost avatar Mar 02 '23 22:03 ghost

Oh, ok and it should be differentiated between

  • click on the magnifying glass
  • turn on the wheel of the mouse
  • (pinch to zoom on mobile)

Pretty much every other program has very fine and device-matched gradations.

It should be thought more about than if it were a slider. Should you move it but only somewhere in the middle of it it jumps to the next zoom level? No, you only offer usual fixing points in those zones...

ghost avatar Mar 10 '23 20:03 ghost