我有一個帶有1251個不同像素值的pgm圖像,範圍從0到1250.我知道這是因爲我可以用kate打開這個圖像文件並查看值。Matlab正在用imread打開一個帶有不同值的pgm圖像
但是當我使用Matlab的imread打開同一個文件時,它也返回1251個不同的像素值,但這些值不是連續的。最小值爲0,最大值爲65483.
我想在for循環中遍歷這些值,因此我需要讀取文件中存在的原始值和連續值。如何在Matlab中做到這一點?
編輯:這是如果有人想嘗試的形象。
我有一個帶有1251個不同像素值的pgm圖像,範圍從0到1250.我知道這是因爲我可以用kate打開這個圖像文件並查看值。Matlab正在用imread打開一個帶有不同值的pgm圖像
但是當我使用Matlab的imread打開同一個文件時,它也返回1251個不同的像素值,但這些值不是連續的。最小值爲0,最大值爲65483.
我想在for循環中遍歷這些值,因此我需要讀取文件中存在的原始值和連續值。如何在Matlab中做到這一點?
編輯:這是如果有人想嘗試的形象。
值進行縮放,這樣當你查看圖像這不是大多是黑色的。
我測試的比例通過檢查直整數截斷的工作原理:
[A] = imread('myfile.pgm', 'pgm');
p = sort(unique(A(:));
q = uint16((0:1250) * 65535/1251)';
all(p == q) % returns 1
所以,你可以恢復這樣的形象:
map = arrayfun(@(x) uint16(x * 1251/65536), 0:65535);
B = arrayfun(@(x) map(x+1), A);
現在就來試試。再次感謝 – mad