Rgb2ind value coding problem
1 回表示 (過去 30 日間)
古いコメントを表示
Hello all. I have some question. i have an image, i read the image using imread after that i convert it to index image using rgb2ind. Then i save it into text file(.txt). why the value in the text file only 0 and 1 ? does it supposed to show range of value from 0-255 ?
a = imread('img1.jpg');
[b,map]=rgb2ind(x,32);
prewitts=edge(b,'prewitt');
dlmwrite('test1.txt', prewitts, 'delimiter', ',');
im using this code. also attach the image and the text file.
0 件のコメント
採用された回答
Guillaume
2014 年 11 月 27 日
It has nothing to with rgb2ind and everything to do with edge.
As per the documentation of edge, it returns a binary image BW of the same size as I, with 1's where the function finds edges in I and 0's elsewhere.
Moreover, since you pass 32 to rgb2ind, the values in b will be in the range 0-31, not 0-255.
Do read the documentation, it's all in there.
2 件のコメント
Guillaume
2014 年 11 月 28 日
To get 256 values (0-255) out of rgb2ind you need to pass 256
This does not change the fact that edge will always return a binary image (0s and 1s)
その他の回答 (1 件)
Image Analyst
2014 年 11 月 28 日
If, for some reason, you want 0 and 255, you could just multiply by 255:
prewitts = uint8(255 * edge(b,'prewitt'));
2 件のコメント
Image Analyst
2014 年 11 月 30 日
You're right that 1, multiplied by 255, will show up as 255 in the text file. But what value do you want the zero to show up as in your text file?
参考
カテゴリ
Help Center および File Exchange で Convert Image Type についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!