Rescale 8-bit grayscale image
5 ビュー (過去 30 日間)
古いコメントを表示
- intensity values in the range [0..63] in f become 0,
- in the range [63+1..126] are rescaled into the range [0..120],
How to rescale the image? Thanks.
0 件のコメント
回答 (1 件)
DGM
2021 年 9 月 8 日
編集済み: DGM
2021 年 9 月 9 日
Here's a start:
inpict = imread('cameraman.tif');
inrange = [64 126; 127 230];
outrange = [0 120; 151 255]; % you sure you don't mean 121?
m = inpict<=inrange(1,2);
outpict = zeros(size(inpict),'uint8');
outpict(m) = (double(inpict(m))-inrange(1,1))./(inrange(1,2)-inrange(1,1)) ...
.*(outrange(1,2)-outrange(1,1))+outrange(1,1);
outpict(~m) = (double(inpict(~m))-inrange(2,1))./(inrange(2,2)-inrange(2,1)) ...
.*(outrange(2,2)-outrange(2,1))+outrange(2,1);
imshow(outpict)
imhist(outpict)
You can do the same using interpolation:
inpict = imread('cameraman.tif');
inrange = [0 64 126 127 230 255];
outrange = [0 0 120 151 255 255];
outpict = uint8(interp1(inrange,outrange,double(inpict),'linear','extrap'));
imshow(outpict)
imhist(outpict)
参考
カテゴリ
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!