Can I represent an image in a binary tree format?
이전 댓글 표시
답변 (2개)
Image Analyst
2013년 3월 19일
1 개 추천
See qtdecomp() in the Image Processing Toolbox.
댓글 수: 6
srikanth Appala
2013년 3월 19일
Image Analyst
2013년 3월 19일
I probably have even less time to solve your problem than you do.
Alessandro
2013년 3월 20일
편집: Alessandro
2013년 3월 20일
Actually the biggest problem is to understand the sparse matrix structure of matlab..... from qtdecomp you get where there is something to do but to get a representation of the image you still need more algorithmic to get the values of the image.
Image Analyst
2013년 3월 20일
No one knows what you even want. Please give us a small image, say 16 by 16, and show us what you want the "output" to be. Why can't you just use the array? Why do you need it in a "binary tree" format instead? How do you define a "binary tree"?
srikanth Appala
2013년 3월 21일
Image Analyst
2013년 3월 21일
I've used qtdecomp only briefly once and that was to just understand how it works. I never need to do that. It doesn't return some information that I needed and when I called the Mathworks they weren't too clear on how it worked either. Anyway, I don't use it. Not sure why you think you need to do this or why you chose that project subject. Can you explain why? Better yet, start your own discussion, rather than intertwine your discussion with Allesandro's.
Alessandro
2013년 3월 21일
편집: Alessandro
2013년 3월 21일
from wikipedia I read the following about image segmentation:
In computer vision, image segmentation is the process of partitioning a digital image into multiple segments (sets of pixels, also known as superpixels). The goal of segmentation is to simplify and/or change the representation of an image into something that is more meaningful and easier to analyze
You need a tree and the "superpixels" values of the tree. I just wannted to understand the sparse objects from matlab so I tryed the qtdecomp function:
%define some grayscale image
I = uint8([1 1 1 1 2 3 6 6;...
1 1 2 1 4 5 6 8;...
1 1 1 1 7 7 7 7;...
1 1 1 1 6 6 5 5;...
20 22 20 22 1 2 3 4;...
20 22 22 20 5 4 7 8;...
20 22 20 20 9 12 40 12;...
20 22 20 20 13 14 15 16]);
%Get where there is information
S = qtdecomp(I,.05);
%Get the information using the simply mean value
erg = sparse(0);
blocks = unique(nonzeros(S));
for blocksize = blocks'
[y x] = find(S==blocksize);
for i=1:length(x)
erg(x(i),y(i)) = mean2(I(y(i):y(i)+blocksize-1,x(i):x(i)+blocksize-1));
end
end
rebuildimage = zeros(size(S));
%Rebuild the image from the mean values in the block
for blocksize = blocks'
[y x] = find(S==blocksize);
for i=1:length(x)
rebuildimage(y(i):y(i)+blocksize-1,x(i):x(i)+blocksize-1) = nonzeros(erg(x(i),y(i)))
end
end
disp(rebuildimage)
So now you can see rebuildimage looks like I. In the matlab sparse arrays S and erg you have the "super pixels" information.
댓글 수: 4
Image Analyst
2013년 3월 21일
I segment stuff all the time and I never build a tree. I'm not sure why it's necessary. In fact, I know it's not, unless you just want to do some particular operation for some reason.
Alessandro
2013년 3월 21일
I would say they could be interesting for wavelet decomposition. But they feels a bit to theoritical for me :)
It is useful for things like topology representation of the segmentation maps. It saves a lot of time for searching algorithms instead of doing linear searching, they use them as a probabilistic framework of searching that can reduce the time by a huge factor (from week to 10 mins of runtime)... I would suggest you to read about huffman coding and binay trees for more understanding about the tree representation!
Image Analyst
2013년 4월 4일
What would you be searching for?
카테고리
도움말 센터 및 File Exchange에서 Neighborhood and Block Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!