libvips / pyvips

python binding for libvips using cffi
MIT License
630 stars 49 forks source link

How to crop a region in tiff #500

Open Fighting-bruceCHN opened 1 week ago

Fighting-bruceCHN commented 1 week ago

Hi,

I'm using pyvips for image registration on whole slide images (WSI). I have successfully generated both the target and warped source images, both in TIFF format and of the same size (23157 x 47374).

I need to crop the same region from these two TIFF images and save the cropped areas as PNG or JPG files, so I can easily visualize the registration results on a remote server. Could you please guide me on how to accomplish this?

Thank you for your great library.

jcupitt commented 1 week ago

Hello @Fighting-bruceCHN,

Just crop the matching areas, for example:

a = pyvips.Image.new_from_file("file1.tif")
b = pyvips.Image.new_from_file("file2.tif")

tile1 = a.crop(10, 10, 512, 512)
tile2 = b.crop(10, 10, 512, 512)

tile1.write_to_file("tile1.jpg")
tile2.write_to_file("tile2.jpg")

If you write your tiff image in tiled format this will be much faster.

jcupitt commented 1 week ago

Ah do you want users to be able to scroll around the images and compare the alignment?

I would save both images as deepzoom, perhaps with:

a = pyvips.Image.new_from_file("file1.tif")
b = pyvips.Image.new_from_file("file2.tif")

tile1.dzsave("file1")
tile2.dzsave("file2")

Then make a web page with openseadragon that loads both images:

http://openseadragon.github.io/examples/multi-image/

You'll need to add some UI to control the opacity of your two layers. Now users will be able to interactively view the images and check for alignment issues.