フィルターのクリア

Computing the integral of a binary image

2 ビュー (過去 30 日間)
Said Rahal
Said Rahal 2012 年 7 月 2 日
Hello fellows:
I am trying to figure out how to compute the integral of the square of the difference between 2 images. So far I know that I have to convert the image to a binary one, but in order to compute the integral I am thinking of plotting the profile of the intensity values of each image than subtract one from another and integrate after I square the result. What do you think about that methodology? If it is wrong or you have a better one can you share keywords for the approach to do that?

採用された回答

Walter Roberson
Walter Roberson 2012 年 7 月 2 日
The integral of the square of the difference between two binary images is
sum(BinaryImage1(:) ~= BinaryImage2(:))
That is:
0 - 0 = 0; 0^2 = 0; and (0 ~= 0) = 0
0 - 1 = -1; (-1)^2 = 1; and (0 ~= 1) = 1
1 - 0 = 1; 1^2 = 1; and (1 ~= 0) = 1
1 - 1 = 0; 0^2 = 0; and (1 ~= 1) = 0
and thus the square of the difference is the same as ~= of the values.
  2 件のコメント
Star Strider
Star Strider 2012 年 7 月 2 日
Isn't that the same as 'xor'?
sum(xor(A,B))
Sean de Wolski
Sean de Wolski 2012 年 7 月 2 日
@Star Strider: yup:
xor([1 1 0 0],[0 1 1 0])
ne([1 1 0 0],[0 1 1 0])

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2012 年 7 月 2 日
Sounds like you just want the RMS difference between the two images, so I guess I don't understand why you think you must convert the images to binary images, or why " plotting the profile" is necessary. For gray scale images, why not just do
rmsDifference = sqrt(sum((double(grayImage1(:)) - double(grayImage2(:))) .^2));

カテゴリ

Help Center および File ExchangeImages についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by