Hey Alex,

You can have multiple ImageItems inside a single ViewBox ( via multiple
calls to `vb.addItem(img)` ), and as long as you set appropriate zValues
and alpha values, one of the images can be semi-transparent over the other.
The app I work on[1] uses this feature, if you want to see it in use.

Good luck,
 - Martin (he/him)

1 -
https://github.com/acq4/acq4/blob/main/acq4/util/imaging/imaging_ctrl.py#L252

On Sun, Jun 26, 2022 at 8:48 AM 'Alex No' via pyqtgraph <
[email protected]> wrote:

> Hi Patrick,
>
> thanks for your answer. If I understand your idea correctly this would
> just allow me to change the alpha value of the image regions which
> correspond to the mask.
> But I'd like to have mask and CT image as two separate images overlayed on
> top of each other. This way I would have two levels, which I could control
> individually, but I am unsure if that's even possible in pyqtgraph. So
> basically I would like to add more than one image item (3d arrays) to the
> image view which are overlayed and both change when using the "volume"
> slider. What works for example is adding other kinds of items like a grid
> item which does not change when using the slider.
>
> Kind regards
> Alex
>
> Patrick schrieb am Freitag, 24. Juni 2022 um 04:48:28 UTC+2:
>
>> Hi,
>>
>> I'm not totally sure I understand the question, but if you want to just
>> mask off regions in the image you could simply merge the mask information
>> to the alpha channel of the image. ImageItem pixel data (for a single image
>> frame) can be four dimensional (R, G, B, A), where A is the
>> alpha/transparency. Set the A channel according to your mask (0 =
>> transparent, 255 = opaque). For the time series data you'll just push that
>> dimension along one. You'll need to play with the various numpy
>> slicing/concatenation methods to merge the data correctly.
>>
>> As a very simple example, if you look at the ImageView example, you can
>> insert/change the following and the images will have that alpha/mask info.
>> This is a poor example since every pixel has the same alpha=128, but it
>> should give you the idea:
>>
>> dataAlpha = 128*np.ones_like(dataRed)
>> data = np.concatenate(
>>     (dataRed[:, :, :, np.newaxis], dataGrn[:, :, :, np.newaxis],
>> dataBlu[:, :, :, np.newaxis], dataAlpha[:, :, :, np.newaxis]), axis=3
>> )
>>
>> Patrick
>>
>>
>> On Thursday, 23 June 2022 at 9:44:25 pm UTC+9:30 [email protected]
>> wrote:
>>
>>> Hello everyone!
>>>
>>> I am relatively new to pyqtgraph and recently I have been using it for a
>>> GUI that visualizes medical image data. What you can do is drag and drop
>>> files into an ImageView, visualize for example a CT image and scroll
>>> through the CT-volume (since pyqt graph nicely detects the 3d array and
>>> adds the third axis as "time" axis which in this case allows to scroll
>>> through the volume).
>>> I also have image masks of the same dimension as the original image
>>> (also 3d numpy arrays) and I want to overlay image and mask and ideally
>>> adapt the transparency of both. Currently I am doing this by calculating a
>>> completely new array which combines both image mask and image (I normalize
>>> both and then create a weighted sum of both arrays). This works but has
>>> some disadvantages, for example I cannot color mask and image separately.
>>> My Question is now: do you know another way how I can overlay both
>>> 3D-arrays (mask + image) as separate layers while keeping the possibility
>>> to scroll through the volume, such that both mask and image change when
>>> scrolling through the volume (see images)? I tried around with the addItem
>>> method defined in the ViewBox class, but without any success.
>>> I would really appreciate some help and ideas.
>>>
>>> Kind regards and thanks in advance
>>> Alex
>>>
>>> Image at certain z-value of volume:
>>> [image: Screenshot 2022-06-23 135542.jpg]
>>>
>>> Image after scrolling through volume at different z-value:[image:
>>> Screenshot 2022-06-23 135607.jpg]
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "pyqtgraph" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/pyqtgraph/8299b9a7-92ee-4f5e-be2a-6546b0ff27f0n%40googlegroups.com
> <https://groups.google.com/d/msgid/pyqtgraph/8299b9a7-92ee-4f5e-be2a-6546b0ff27f0n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/CAD_p8v0TA1%3D7-xh93oHEOmMwR%3DgjDEWmBs2e73ab5R5hhwg7rg%40mail.gmail.com.

Reply via email to