Tài Liệu Học Tập
No Result
View All Result
  • Đề Thi
  • Lớp 12
    • Lịch Sử Lớp 12
    • Địa Lí Lớp 12
    • Ngữ Văn Lớp 12
    • GD KTPL Lớp 12
    • Toán Lớp 12
    • Tiếng Anh Lớp 12
    • Hóa Học Lớp 12
    • Sinh Học Lớp 12
    • Vật Lí Lớp 12
  • Lớp 11
    • Toán Lớp 11
    • Ngữ Văn Lớp 11
    • Tiếng Anh Lớp 11
    • Hóa Học Lớp 11
    • Sinh Học Lớp 11
    • Vật Lí Lớp 11
    • Lịch Sử Lớp 11
    • Địa Lí Lớp 11
    • GDCD Lớp 11
  • Lớp 10
    • Toán Lớp 10
    • Ngữ Văn Lớp 10
    • Tiếng Anh Lớp 10
    • Hóa Học Lớp 10
    • Sinh Học Lớp 10
    • Vật Lí Lớp 10
    • Lịch Sử Lớp 10
    • Địa Lí Lớp 10
    • GDKTPL Lớp 10
    • Công nghệ lớp 10
    • Tin Học Lớp 10
  • Lớp 9
    • Toán Lớp 9
    • Ngữ Văn Lớp 9
    • Tiếng Anh Lớp 9
    • Lịch sử và địa lý lớp 9
    • Khoa Học Tự Nhiên Lớp 9
    • GDCD Lớp 9
  • Lớp 8
    • Toán Lớp 8
    • Ngữ Văn Lớp 8
    • Tiếng Anh Lớp 8
    • Lịch sử và địa lý lớp 8
    • Khoa Học Tự Nhiên Lớp 8
    • GDCD 8
  • Lớp 7
    • Toán Lớp 7
    • Văn Lớp 7
    • Tiếng Anh Lớp 7
    • Lịch Sử Và Địa Lí Lớp 7
    • Khoa Học Tự Nhiên Lớp 7
  • Lớp 6
    • Toán Lớp 6
    • Văn Lớp 6
    • Tiếng Anh lớp 6
    • Lịch Sử và Địa Lí Lớp 6
    • Khoa Học Tự Nhiên lớp 6
  • Lớp 5
    • Toán lớp 5
    • Tiếng Việt Lớp 5
    • Tiếng Anh Lớp 5
    • Lịch Sử và Địa Lí Lớp 5
  • Lớp 4
    • Toán lớp 4
    • Tiếng Việt Lớp 4
    • Tiếng Anh Lớp 4
    • Lịch Sử và Địa Lí Lớp 4
  • Lớp 3
    • Toán lớp 3
    • Tiếng Anh Lớp 3
    • Tiếng Việt Lớp 3
  • Mẹo Hay
  • Tin tức
  • Liên Hệ
Tài Liệu Học Tập
No Result
View All Result
Home Văn học

Color deconvolution implementations & best practice

by Tranducdoan
11/02/2026
in Văn học
0
Đánh giá bài viết

The posts about colour deconvolution today have reminded me of a question I had some time ago…

Color deconvolution, as described by Ruifrok and Johnston, involves generating a 3×3 stain matrix using three stain vectors.

I understand that if two stains are available, then the remaining elements can be created by generating a third (pseudo)stain that is orthogonal to the first two.

As far as I can tell, this third stain is generated using the cross product in several places:

  • QuPath (code)
  • scikit-image (code)
  • HistomicsTK (code)

I wasn’t able to tell what approach CellProfiler takes (I figure this code is relevant, but I got lost ).

However, I understand that this is not exactly how it is implemented in the @gabriel’s ImageJ/Fiji plugin. From a quick look at the code, this may be because of negative values being clipped to 0:

Mục Lục Bài Viết

  1. fiji/Colour_Deconvolution/blob/dca9a107f1d90b2f15dd7fac4e737534984e64f1/src/main/java/sc/fiji/colourDeconvolution/StainMatrix.java#L193

fiji/Colour_Deconvolution/blob/dca9a107f1d90b2f15dd7fac4e737534984e64f1/src/main/java/sc/fiji/colourDeconvolution/StainMatrix.java#L193

  1. if (cosx[1]==0.0){ //2nd colour is unspecified
  2. if (cosy[1]==0.0){
  3. if (cosz[1]==0.0){
  4. cosx[1]=cosz[0];
  5. cosy[1]=cosx[0];
  6. cosz[1]=cosy[0];
  7. }
  8. }
  9. }
  10. if (cosx[2]==0.0){ // 3rd colour is unspecified
  11. if (cosy[2]==0.0){
  12. if (cosz[2]==0.0){
  13. if ((cosx[0]*cosx[0] + cosx[1]*cosx[1])> 1){
  14. if (doIshow)
  15. IJ.log(“Colour_3 has a negative R component.”);
  16. cosx[2]=0.0;
  17. }
  18. else
  19. cosx[2]=Math.sqrt(1.0-(cosx[0]*cosx[0])-(cosx[1]*cosx[1]));

In any case, the following Groovy script written for Fiji shows that the third stain vector is not orthogonal using the Fiji plugin, i.e. the dot product is not zero:

import sc.fiji.colourDeconvolution.* def mat = new StainMatrix() mat.init(“H&E”, 0.644211000,0.716556000,0.266844000,0.09278900,0.95411100,0.28311100,0.00000000,0.00000000,0.0000000) mat.compute(true, false, new ij.ImagePlus(“Anything”, new ij.process.ColorProcessor(10, 10))) double[] stain1 = [mat.cosx[0], mat.cosy[0], mat.cosz[0]] double[] stain2 = [mat.cosx[1], mat.cosy[1], mat.cosz[1]] double[] stain3 = [mat.cosx[2], mat.cosy[2], mat.cosz[2]] println ‘Stain 1: ‘ + stain1 println ‘Stain 2: ‘ + stain2 println ‘Stain 3: ‘ + stain3 println ‘Dot product stain 1 x stain 2: ‘ + dot(stain1, stain2) println ‘Dot product stain 1 x stain 3: ‘ + dot(stain1, stain3) println ‘Dot product stain 2 x stain 3: ‘ + dot(stain2, stain3) double dot(double[] v1, double[] v2) { double s = 0 for (int i = 0; i < v1.length; i++) s += v1[i] * v2[i] return s }

It’s not completely clear to me that negative values must be avoided in the stain matrix, and that this is more important than orthogonality.

It’s also not clear to me if/how much this matters.

I think probably all of us benefited from @gabriel’s implementation – I know I did, and I’ve seen it referred to a lot of time in other people’s code. But even though it seems to be pretty much the standard reference for many (in the absence of the original macro), I’m not sure it’s widely recognized that other implementations seem to have deviated a bit in this detail.

In any case, I’d be really interested to understand if there is a ‘right’ way to do it.

I’m also very interested in whether @phaub might have any more best practice suggestions from this

Previous Post

Website design for Nha Tot real estate

Next Post

Ráng lên hay rán lên đúng chính tả?

Tranducdoan

Tranducdoan

Trần Đức Đoàn sinh năm 1999, anh chàng đẹp trai đến từ Thái Bình. Hiện đang theo học và làm việc tại trường cao đẳng FPT Polytechnic

Related Posts

Does better weather really make you happier?

by Tranducdoan
11/02/2026
0
0

With parts of the United States approaching record snowfall this season, there are probably thousands of people at this very...

Các thụ thể tế bào là gì?

by Tranducdoan
11/02/2026
0
0

Cơ thể người được cấu tạo từ các tế bào và chúng không sống biệt lập, chúng “giao tiếp” với...

Điện xoay chiều

by Tranducdoan
11/02/2026
0
0

Bài viết vềĐiện từ học Điện Từ học Lịch sử Giáo trình Dòng điện xoay chiều là dòng điện có...

Điền trang là gì? Phân biệt thái ấp và điền trang

by Tranducdoan
11/02/2026
0
0

Điền trang và thái ấp là hai thuật ngữ được sử dụng phổ biến trong thời kỳ phong kiến, đặc...

Load More
Next Post

Ráng lên hay rán lên đúng chính tả?

Xoilac TV trực tiếp bóng đá đọc sách online Socolive trực tiếp Ca Khia TV trực tiếp XoilacTV go 88 sàn forex uy tín 789bet sumclub
Tài Liệu Học Tập

Copyright © 2022 Tài Liệu Học Tập.

Chuyên Mục

  • Đề Thi
  • Lớp 12
  • Lớp 11
  • Lớp 10
  • Lớp 9
  • Lớp 8
  • Lớp 7
  • Lớp 6
  • Lớp 5
  • Lớp 4
  • Lớp 3
  • Mẹo Hay
  • Tin tức
  • Liên Hệ

Tham Gia Group Tài Liệu Học Tập

No Result
View All Result
  • Đề Thi
  • Lớp 12
    • Lịch Sử Lớp 12
    • Địa Lí Lớp 12
    • Ngữ Văn Lớp 12
    • GD KTPL Lớp 12
    • Toán Lớp 12
    • Tiếng Anh Lớp 12
    • Hóa Học Lớp 12
    • Sinh Học Lớp 12
    • Vật Lí Lớp 12
  • Lớp 11
    • Toán Lớp 11
    • Ngữ Văn Lớp 11
    • Tiếng Anh Lớp 11
    • Hóa Học Lớp 11
    • Sinh Học Lớp 11
    • Vật Lí Lớp 11
    • Lịch Sử Lớp 11
    • Địa Lí Lớp 11
    • GDCD Lớp 11
  • Lớp 10
    • Toán Lớp 10
    • Ngữ Văn Lớp 10
    • Tiếng Anh Lớp 10
    • Hóa Học Lớp 10
    • Sinh Học Lớp 10
    • Vật Lí Lớp 10
    • Lịch Sử Lớp 10
    • Địa Lí Lớp 10
    • GDKTPL Lớp 10
    • Công nghệ lớp 10
    • Tin Học Lớp 10
  • Lớp 9
    • Toán Lớp 9
    • Ngữ Văn Lớp 9
    • Tiếng Anh Lớp 9
    • Lịch sử và địa lý lớp 9
    • Khoa Học Tự Nhiên Lớp 9
    • GDCD Lớp 9
  • Lớp 8
    • Toán Lớp 8
    • Ngữ Văn Lớp 8
    • Tiếng Anh Lớp 8
    • Lịch sử và địa lý lớp 8
    • Khoa Học Tự Nhiên Lớp 8
    • GDCD 8
  • Lớp 7
    • Toán Lớp 7
    • Văn Lớp 7
    • Tiếng Anh Lớp 7
    • Lịch Sử Và Địa Lí Lớp 7
    • Khoa Học Tự Nhiên Lớp 7
  • Lớp 6
    • Toán Lớp 6
    • Văn Lớp 6
    • Tiếng Anh lớp 6
    • Lịch Sử và Địa Lí Lớp 6
    • Khoa Học Tự Nhiên lớp 6
  • Lớp 5
    • Toán lớp 5
    • Tiếng Việt Lớp 5
    • Tiếng Anh Lớp 5
    • Lịch Sử và Địa Lí Lớp 5
  • Lớp 4
    • Toán lớp 4
    • Tiếng Việt Lớp 4
    • Tiếng Anh Lớp 4
    • Lịch Sử và Địa Lí Lớp 4
  • Lớp 3
    • Toán lớp 3
    • Tiếng Anh Lớp 3
    • Tiếng Việt Lớp 3
  • Mẹo Hay
  • Tin tức
  • Liên Hệ

Copyright © 2022 Tài Liệu Học Tập.