Dear all,

I think that I do not manage to differenciate correctly the role of some
variables.
What is the difference between:
-roi_out->scale
-piece->iscale
-self->dev->preview_pipe->iscale

And the difference between:
-roi_out->width
-piece->iwidth
-self->dev->preview_pipe->processed_width
-self->dev->width

Which variable has to be used for which purpose?

What I currently have:
before downscaling:
https://drive.google.com/open?id=12Zj_Pcyhnm1yt_kgSS6F01q979TLMVMO
after downscaling, we are too zoomed out:
https://drive.google.com/open?id=1eMQ-wj8DznKT7GNoZy7pRtOvkUB-_vk1
I would like to "tell the engine" that we are downscaling the image for the
preview, and that the 29% zoom is going to become a 100% zoom (as the image
is smaller), but without affecting the information visible by the user (the
user will see that he is at 29% zoom).
Basically, the user should see no difference whether the downscaling is
activated or not

Thank you for any help

rawfiner



2018-07-06 0:06 GMT+02:00 rawfiner <rawfi...@gmail.com>:

> Hi,
>
> I am still trying to resize raw before demosaicing to speed up raw
> denoising.
>
> I now get the zoom level using the following code:
>   float scale = 1.0;
>   int closeup = dt_control_get_dev_closeup();
>   if (piece->pipe->type == DT_DEV_PIXELPIPE_FULL)
>     scale = dt_dev_get_zoom_scale(self->dev, zoom, closeup ? 2.0 : 1.0,
> 0);
>   else if (piece->pipe->type == DT_DEV_PIXELPIPE_PREVIEW)
>     scale = dt_dev_get_zoom_scale(self->dev, zoom, closeup ? 2.0 : 1.0,
> 1);
>
> This works fine in modify_roi_out, but sometimes gives 1 instead of what I
> expect (the zoom factor) when called from modify_roi_in.
> My problem is to manage to get the scale and use it correctly.
>
> My module would resize the raw image.
> Thus, input and output have different dimentions.
> I tried to set the roi_out width and height with modify_roi_out, this
> works fine.
>
> However, even after trying various things in modify_roi_in, I don't manage
> to get the full image as ivoid.
> First thing that I don't understand is where roi_in is modified between
> modify_roi_out and modify_roi_in, as at the beginning of modify_roi_in, the
> roi_in width is equal to roi_out width, while they were different at the
> end of roi_out?
>
> Also, in modify_roi_out I tried to save the scale in roi_out->scale, but
> in modify_roi_in if I try to print roi_out->scale, I always get 1.
> Is the roi_out variable used in modify_roi_out different from the one in
> modify_roi_in?
>
> Maybe am I not catching something about the role of these passes.
>
> Thanks for any help!
>
> Cheers,
> rawfiner
>
> 2018-05-10 23:13 GMT+02:00 rawfiner <rawfi...@gmail.com>:
>
>> Thank you for your answer.
>>
>> 2018-05-09 13:22 GMT+02:00 johannes hanika <hana...@gmail.com>:
>>
>>> heya,
>>>
>>> On Wed, May 9, 2018 at 12:27 PM, rawfiner <rawfi...@gmail.com> wrote:
>>> > 2018-05-08 17:16 GMT+02:00 johannes hanika <hana...@gmail.com>:
>>> >> i'm guessing you want to detect whether you are running a
>>> >> DT_DEV_PIXELPIPE_FULL pipe in darkroom mode (as opposed to
>>> >> DT_DEV_PIXELPIPE_PREVIEW or _EXPORT) and then do this downscaling
>>> >> yourself before running your algorithm on reduced resolution.
>>> >>
>>> >
>>> > Yes, and I would like to know the zoom factor in case of
>>> > DT_DEV_PIXELPIPE_PREVIEW , in order to downscale only if the image is
>>> > sufficiently zoomed out (for example, I don't want to downscale the
>>> image if
>>> > the zoom is at 90%, but I want to downscale if it is below 50%).
>>>
>>> right. to determine the total scale factor, you would need to do
>>> something like for instance in sharpen.c:
>>>
>>> const int rad = MIN(MAXR, ceilf(d->radius * roi_in->scale /
>>> piece->iscale));
>>>
>>> which determines the pixel radius scaled by input buffer scaling
>>> (iscale) and region of interest scaling (roi_in->scale).
>>>
>>
>> Yes, I have seen that kind of things in the code of non local means.
>> Yet, if I understand correctly, this allows to retreive the scale factor
>> for an already downscaled image, i.e. when the image was downscaled
>> previously in the pipeline.
>> What I would like is a bit different, as it would be to know if I can
>> downscale the image or not, depending on the zoom level in the darkroom.
>> But I guess that I will find the necessary information in the function
>> dt_iop_clip_and_zoom_mosaic_half_size_f() that you pointed me out!
>>
>>
>>> note that the preview pipe is what fills the whole image but
>>> downscaled (iscale != 1) in the navigation view in the top left
>>> corner. the "full" pipeline fills the pixels in the center view of
>>> darkroom mode, at exactly the scale and crop you see on screen (iscale
>>> == 1 mostly but the other scale and bounds in roi_in will change with
>>> the current view).
>>>
>>> to find out whether you're running either one of the two you'd write
>>> something similar to bilat.c:
>>>
>>> if(self->dev->gui_attached && g && piece->pipe->type ==
>>> DT_DEV_PIXELPIPE_PREVIEW)
>>>
>>
>> Ok, thank you for these explainations
>> I think I have everything I need to make some new trials!
>>
>> Regards,
>>
>> rawfiner
>>
>>
>

___________________________________________________________________________
darktable developer mailing list
to unsubscribe send a mail to darktable-dev+unsubscr...@lists.darktable.org

Reply via email to