How to convert binary image to RGB image in matlab?

51 ビュー (過去 30 日間)
Anushka
Anushka 2015 年 6 月 5 日
コメント済み: Walter Roberson 2022 年 2 月 5 日
How to convert binary image to RGB image in matlab?I have converted an RGB image into binary using J1=im2bw(J1);.Now I want to convert it back to RGB image.
  1 件のコメント
Guillaume
Guillaume 2015 年 6 月 5 日
It is of course impossible (for a computer or a human) to recreate information that has been purposefully deleted.

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

回答 (2 件)

Titus Edelhofer
Titus Edelhofer 2015 年 6 月 5 日
Hi,
you need to replicate the bw image for each color channel, convert to uint8 and multiply by 255:
J1 = 255 * repmat(uint8(J1), 1, 1, 3));
Note that of course it will still be black and white only ;-).
Titus
  7 件のコメント
Anushka
Anushka 2015 年 6 月 5 日
But by using Bitxor also I didnt obtain back the RGB image correctly.
Guillaume
Guillaume 2015 年 6 月 5 日
Please comment in that other question. bitxor is what you want, if you do not get the right result, you must have made an error in your code, so please post it.

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


Luis González Guzmán
Luis González Guzmán 2017 年 4 月 26 日
編集済み: Walter Roberson 2017 年 4 月 26 日
function [RGB_Image] = convertBinImage2RGB(BinImage)
[fil, col] = size(BinImage);
RGB_Image = zeros(fil,col, 3);
[posX , posY] = find(BinImage==1);
numIter = size(posX,1)*size(posX,2);
for ii = 1 : numIter
RGB_Image(posX(ii),posY(ii), 1:3) = 255;
end % for
end % function
  3 件のコメント
john
john 2022 年 2 月 5 日
Please could you tell what the below line does?
BinImage(:,:,[1 1 1]) * 255 )
it multiples all row and columns by 255 i understood this.
but what does [1 1 1] does?
Walter Roberson
Walter Roberson 2022 年 2 月 5 日
BinImage(:,:,K)
selects all of the 3D panes of BinImage that match the values in K, in order, right?
Well, there is no restriction against duplicating an index. Just the same way that you could say BinImage(:,:,[1 2]) or something like BinImage(:,:,[3 2 1]) if you had reason to (and the array was the right size), you can also ask for BinImage(:,:,[1 1 1]) which means to take the first pane of BinImage three times. Those would, of course, all be the same. So BinImage(:,:,[1 1 1]) for a 2D array BinImage would be the same as repmat(BinImage, 1, 1, 3), three copies of the 2D array BinImage, arranged as a 3D array.
So overall the code makes three stacked copies of BinImage, multiplies the result by 255 (getting out values that are either 0 or 255 in each location), and then uint8() to convert those all to uint8(0) and uint8(255) . An RGB image that is full black (where the 0's are), or full white (where the 255 are)

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

カテゴリ

Help Center および File ExchangeImage Segmentation and Analysis についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by