Replace repetitive values in a matrix with another value?
7 ビュー (過去 30 日間)
古いコメントを表示
Hello there,
I'm new to Matlab so hopefully I can attempt to explain this! I have an image that has some interference that I am looking to get rid of. I have displayed each pixel in the image as a value from 0 to 255 in a matrix. The interference is in the form of repetitive values. So for example (and simplicity sake) one row of the matrix may look like:
1 2 3 3 3 3 3 4 5 3 3 3 6 3 7
Where the interference would be the string of 3 3 3 3 3 and 3 3 3 and the single 3 there would be valid.
What I would like to do is replace the repetitive values in the entire matrix with a nearest neighbor value say median of the pixel above and below and if that's not possible maybe just NAN. Would anyone know how to do this? Thanks!
1 件のコメント
Ryan
2012 年 7 月 2 日
is the repetitive value known? is the repetitive value always the same for a given image (e.g. will the repeated value in the image always be a 3)?
採用された回答
Sean de Wolski
2012 年 7 月 2 日
x = [1 2 3 3 3 3 3 4 5 3 3 3 6 3 7] data
idxrep = ~diff([-inf,x]) %pad with -inf and identify areas of zero change (~)
x(idxrep)=nan; %replace with NaN, or whatever
If you chose the NaN route and want an awesome way to fill them:
y = inpaint_nans(x)
2 件のコメント
その他の回答 (3 件)
Walter Roberson
2012 年 6 月 29 日
Convert the vector to double-precision data type (needed because integers cannot represent NaN.) diff() it. Replace the places the diff() was 0 with NaN.
0 件のコメント
Jessica
2012 年 7 月 2 日
編集済み: Jessica
2012 年 7 月 2 日
2 件のコメント
Sean de Wolski
2012 年 7 月 2 日
Well, yes. My example was for a row vector. For a matrix you'll have to do a little more work. Specifically you will have to add a column vector to the front of the matrix (rather than a scalar) (this is the cause of the HORZCAT error). Second, you will have to specify which dimension you want to differentiate across.
x = repmat([1 2 3 3 3 3 3 4 5 3 3 3 6 3 7],10,1);
idxrep = [false(size(x,1),1) ~diff(x,1,2)]
x(idxrep) = NaN
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!