<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Mathematica 问答社区 - 分类 '图像处理' 的近期问答</title>
<link>https://mmaqa.com/qa/qa/%E5%9B%BE-%E5%83%8F-%E5%A4%84-%E7%90%86</link>
<description>Powered by Question2Answer</description>
<item>
<title>已回答：如何将密度图旋转任意角度,再加上Frame边框</title>
<link>https://mmaqa.com/qa/2756/frame?show=2760#a2760</link>
<description>

&lt;pre data-pbcklang=&quot;prettyprint lang-mma&quot; data-pbcktabsize=&quot;4&quot; class=&quot;prettyprint linenums lang-prettyprint lang-mma&quot;&gt;da = Import[&quot;D:/wavenorm-v2.dat&quot;];
{x, y, z} = 
 Transpose[Select[da, Length[#] == 3 &amp;amp;]]; (* da中有空行，需要过滤一下 *)
pos = Transpose[{x, y}];
p1 = Graphics[{Table[{Blend[{Darker@Blue, White, Red}, z[[i]]*20], 
      PointSize[0.03], EdgeForm[{Thick, Black}], Point[pos[[i]]]}, {i,
       1, Length[pos]}]}];
p1 = Rotate[p1, 45 Degree]&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/2756/frame?show=2760#a2760</guid>
<pubDate>Fri, 02 Apr 2021 02:09:33 +0000</pubDate>
</item>
<item>
<title>已回答：请问如何将图片的轮廓导出为坐标值（数组）。</title>
<link>https://mmaqa.com/qa/2674/?show=2675#a2675</link>
<description>

&lt;p&gt;&lt;span style=&quot;font-family:sans-serif,Arial,Verdana,Trebuchet MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol&quot;&gt;主要使用这个PixelValuePositions。&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family:sans-serif,Arial,Verdana,Trebuchet MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol&quot;&gt;pixeXY&lt;/span&gt;&lt;span style=&quot;font-family:sans-serif,Arial,Verdana,&amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Apple Color Emoji&amp;quot;,&amp;quot;Segoe UI Emoji&amp;quot;,&amp;quot;Segoe UI Symbol&amp;quot;&quot;&gt;是你想要的坐标，&lt;/span&gt;&lt;span style=&quot;font-family:sans-serif,Arial,Verdana,Trebuchet MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol&quot;&gt;其中image是你上面的图像（Out[2]）&lt;/span&gt;&lt;/p&gt;

&lt;pre data-pbcklang=&quot;prettyprint lang-mma&quot; data-pbcktabsize=&quot;4&quot; class=&quot;prettyprint linenums lang-prettyprint lang-mma&quot;&gt;pixeXY = PixelValuePositions[EdgeDetect[image], 1];
ListPlot[pixeXY, AspectRatio -&amp;gt; Automatic]
&lt;/pre&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/2674/?show=2675#a2675</guid>
<pubDate>Fri, 20 Dec 2019 15:23:26 +0000</pubDate>
</item>
<item>
<title>图片转字符画时前端崩溃，但是内核还在运算</title>
<link>https://mmaqa.com/qa/2196/</link>
<description>

&lt;p&gt;我把下面的imageApply修改后，代码可以正常运行，并且速度变快了&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
(*对每个像素块去匹配字符串图片*)
imageApply[x_] := Module[{},
   If[x == 1, Return[&amp;quot; &amp;quot;],
    If[x == 0, Return[&amp;quot;0&amp;quot;],
     If[x &amp;lt; .5, Return[&amp;quot;.&amp;quot;], Return[&amp;quot;1&amp;quot;]
      ]]]
   ];&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;下面是一段生成彩色字符画的代码，希望大家多多指教&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
(*找到画中五种最主要的颜色*)
colorQuanity[address_] := Module[{pic, pic5col, color, char, col, ass},
  pic = Import[address];
  pic5col = ColorQuantize[pic, 5];
  col = Union@Flatten[ImageData[pic5col], 1];
  color = RGBColor[col[[#]]] &amp;amp; /@ Range[5];
  char = {&amp;quot;?&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;#&amp;quot;, &amp;quot;x&amp;quot;};
  ass = Association[
    Table[col[[i]] -&amp;gt; {color[[i]], char[[i]]}, {i, 1, 5}]];
  Return[ass];
  ]
  ---------------------------------------
  (*将图片分成小的像素块*)
  picpad[address_] := 
  ImagePartition[ColorQuantize[Import[address], 5], 5];
  ---------------------------------------
  (*找到像素块中使用最多的颜色*)
  f[x_] := Commonest[Flatten[ImageData[x], 1], 1][[1]]
  ---------------------------------------
  (*将像素块与其符号对应*)
  imageApply[x_] := Module[{ans},
  ans = ass[x];
    Return[Style[ans[[2]], ans[[1]]]];
  ]
---------------------------------------
(*导出合成的彩色字符画*)
Export[&amp;quot;1.jpg&amp;quot;, 
  Grid[Map[imageApply, oneimage, {2}], Spacings -&amp;gt; {0, -.2}]]; &lt;/pre&gt;



&lt;p&gt;------之前遇到的问题-------&lt;/p&gt;



&lt;p&gt;自己在做一个将bad apple的图片转字符画的代码，代码如下，但是遇到了一个问题，下面这段代码在处理的图片较小时，如只处理30张，是可以的，但是一旦处理的变多，程序就会崩溃，但是内核还是在运算的，就是还会有图片的输出。&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;自己好像找不到问题在哪里，每一行代码单独运行都是不会有问题的。&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;测试数据：链接: https://pan.baidu.com/s/1dFrPldf 密码: jrkq&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;测试数据里有500张图片，我下面的代码每次运行30不会出错，但是多了就会出错。&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
(*生成用于替换的字符*)
char = FromCharacterCode[#] &amp;amp; /@ Join[Range[48, 49], {32}, {46}];
charpic = 
 ColorConvert[Rasterize[#, RasterSize -&amp;gt; 10], &amp;quot;Grayscale&amp;quot;] &amp;amp; /@ char
(*图像分割*)
importprocess[address_] := 
  ImagePartition[Binarize[Thumbnail[Import[address], 680]], {7, 17}];
(*对每个像素块求颜色均值*)
f[x_] := N[Mean[Flatten[ImageData[x]]]];
(*对每个像素块去匹配字符串图片*)
imageApply[x_] := Module[{},
   If[x == 1, Return[charpic[[3]]],
     If[x == 0, Return[charpic[[1]]],
      If[x &amp;lt; .5, Return[charpic[[4]]], Return[charpic[[2]]]]
      ]
     ];
   ];
(*将最后生成的图像导出*)
export[start_, end_] := Module[{i, picpad, oneimage},
   Table[
     picpad = 
      importprocess[
       &amp;quot;F:\\bad_apple\\&amp;quot; &amp;lt;&amp;gt; 
        ToString[i] &amp;lt;&amp;gt; &amp;quot;.jpg&amp;quot;];
     oneimage = Map[f, picpad, {2}];
     Export[
      &amp;quot;F:\\bad_apple_char\\&amp;quot; &amp;lt;&amp;gt;
        ToString[i] &amp;lt;&amp;gt; &amp;quot;.jpg&amp;quot;, 
      Grid[Map[imageApply, oneimage, {2}], Spacings -&amp;gt; {0, -.1}]];
     , {i, start, end}];];&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;关于上面函数的使用，把上面代码运行后，只需要输入export[图片开始序号,图片结束序号]即可&lt;/p&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/2196/</guid>
<pubDate>Wed, 20 Sep 2017 05:05:55 +0000</pubDate>
</item>
<item>
<title>已回答：如何将图像从空间域变换到频域</title>
<link>https://mmaqa.com/qa/1344/?show=1357#a1357</link>
<description>

&lt;p&gt;通常习惯下大家习惯移频一下看频谱，主要原因是让低频（ &lt;span style=&quot;background-color:rgb(255, 255, 255); color:rgb(0, 0, 0)&quot;&gt;图片中的信号多是低频平滑、非突变的，突变的噪点一般而言都是高频&lt;/span&gt;）集中在一起方便观察图片信息，但这不是必须的，有时候甚至要避免，这主要是根据你希望得到什么信息，以及后期需要做什么处理，如 &lt;a rel=&quot;nofollow&quot; href=&quot;https://mmaqa.com/index.php/user/xzczd&quot;&gt;xzczd&lt;/a&gt; 所说，正常使用mma自带的ImagePeriodogram就可以了（当然，这个函数默认是会移频的，注意选项Alignment，如果指定Alignment -&amp;gt; {Left, Top}，那就是不移了）。如果要自造轮子，参考如下&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
pic = ColorConvert[ExampleData[{&amp;quot;TestImage&amp;quot;, &amp;quot;Lena&amp;quot;}], &amp;quot;Grayscale&amp;quot;];&lt;/pre&gt;



&lt;hr&gt;


&lt;p&gt;&lt;strong&gt;Method one：&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
ImageAdjust[
 Image[RotateLeft[Log10[PeriodogramArray[pic]], 
   Floor[Dimensions@ImageData[pic]/2]]]]&lt;/pre&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://o8aucf9ny.bkt.clouddn.com/2016-10-14-13-03-36.png&quot; style=&quot;height:425px; width:427px&quot;&gt;&lt;/p&gt;



&lt;p&gt;这办法PeriodogramArray的帮助文档也有，不过我通常不用，因为我不喜欢用RotateLeft，感觉如果图片维数是奇数就落了一格，心里有疙瘩，虽然对图片处理并无明显影响。&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Method two:&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
ImageAdjust@
 Image@Log10@
   Abs@Fourier[
     ImageData[pic]*
      PadRight[{{}}, Dimensions[ImageData[pic]], {{1, -1}, {-1, 1}}]]&lt;/pre&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://o8aucf9ny.bkt.clouddn.com/2016-10-14-13-03-36.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://o8aucf9ny.bkt.clouddn.com/2016-10-14-13-03-36.png&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/1344/?show=1357#a1357</guid>
<pubDate>Fri, 14 Oct 2016 05:04:45 +0000</pubDate>
</item>
<item>
<title>已回答：如何完全地确保图像大小的固定，不受坐标标签以及坐标轴变化而变化？</title>
<link>https://mmaqa.com/qa/728/?show=729#a729</link>
<description>

&lt;p&gt;&lt;strong&gt;ImageSize&lt;/strong&gt;是控制整个图像的大小，当坐标轴的标签变大时，由于整个图像大小一定了，那么里面图自然就变小了，见例一。&lt;/p&gt;



&lt;p&gt;如果想要，当坐标轴的标签变大时，里面的图像不变小，可以使用&lt;strong&gt;ImagePadding&lt;/strong&gt;，见例二。&lt;/p&gt;



&lt;p&gt;例一：&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
Column[Table[
  Graphics[{Thick, Green, Rectangle[{0, -1}, {2, 1}], Red, Disk[], 
    Blue, Circle[{2, 0}], Yellow, Polygon[{{2, 0}, {4, 1}, {4, -1}}], 
    Purple, Arrowheads[Large], Arrow[{{4, 3/2}, {0, 3/2}, {0, 0}}], 
    Black, Dashed, Line[{{-1, 0}, {4, 0}}]}, Axes -&amp;gt; True, 
   AxesLabel -&amp;gt; {Style[&amp;quot;xxx&amp;quot;, k], Style[&amp;quot;yyy&amp;quot;, k]}, 
   ImageSize -&amp;gt; {500, Automatic}, Background -&amp;gt; Black], {k, 10, 50, 
   20}]]&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;例二：&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
Column[Table[
  Graphics[{Thick, Green, Rectangle[{0, -1}, {2, 1}], Red, Disk[], 
    Blue, Circle[{2, 0}], Yellow, Polygon[{{2, 0}, {4, 1}, {4, -1}}], 
    Purple, Arrowheads[Large], Arrow[{{4, 3/2}, {0, 3/2}, {0, 0}}], 
    Black, Dashed, Line[{{-1, 0}, {4, 0}}]}, Axes -&amp;gt; True, 
   AxesLabel -&amp;gt; {Style[&amp;quot;xxx&amp;quot;, k], Style[&amp;quot;yyy&amp;quot;, k]}, 
   ImagePadding -&amp;gt; 50, ImageSize -&amp;gt; {600, Automatic}, 
   Background -&amp;gt; Black], {k, 10, 50, 20}]]&lt;/pre&gt;



&lt;p&gt;例二中的&lt;strong&gt;ImageSize&lt;/strong&gt;也是控制整个图像的大小，但通过&lt;strong&gt;ImagePadding&lt;/strong&gt;指定了里面图像到边界的距离（即留给标签的空白宽度），这样里面图像的大小就固定了，但因此标签可能会被剪裁。&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;ImagePadding&lt;/strong&gt;可以四面都设置，详见帮助。&lt;/p&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/728/?show=729#a729</guid>
<pubDate>Sat, 04 Jun 2016 12:32:40 +0000</pubDate>
</item>
<item>
<title>已回答：Export[&quot;1.png&quot;, InputNotebook[]]如何输出带有in out 的长图</title>
<link>https://mmaqa.com/qa/397/export-1-png-inputnotebook-in-out?show=419#a419</link>
<description>

&lt;p&gt;问题1：输出没有Cell Label&lt;/p&gt;



&lt;p&gt;这应该是一个选项的问题而不是Window宽度的问题，对比如下：&lt;/p&gt;



&lt;p&gt;观察以下效果：&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=973285401102677691&quot; style=&quot;height:158px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;得到的a.png&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=8319908419856705654&quot; style=&quot;height:97px; width:420px&quot;&gt;&lt;/p&gt;



&lt;p&gt;更改选项：&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=4385575769482211656&quot; style=&quot;height:161px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;得到：&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=12483361115572256420&quot; style=&quot;height:120px; width:469px&quot;&gt;&lt;/p&gt;



&lt;p&gt;问题2：删去最后一行&lt;/p&gt;



&lt;p&gt;复制以下code到&lt;strong&gt;同一个cell里面&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
SetOptions[InputNotebook[], CellLabelAutoDelete -&amp;gt; False];
temp = InputNotebook[];
SelectionMove[temp, Previous, CellGroup];
NotebookDelete[temp];
Export[&amp;quot;a.png&amp;quot;, temp]&lt;/pre&gt;



&lt;p&gt;执行前：&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=9516210757665633104&quot; style=&quot;height:178px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;执行后：&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=6128021602062215305&quot; style=&quot;height:96px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;导出的文件：&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://mmaqa.com/qa/?qa=blob&amp;amp;qa_blobid=9085416030857507042&quot; style=&quot;height:36px; width:52px&quot;&gt;&lt;/p&gt;



&lt;p&gt;问题3：提高输出质量&lt;/p&gt;



&lt;p&gt;最后一行代码可以改为&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
Export[&amp;quot;a.png&amp;quot;, temp, ImageResolution -&amp;gt; 200]&lt;/pre&gt;



&lt;p&gt;后面那个数你可以自己看着调整&lt;/p&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/397/export-1-png-inputnotebook-in-out?show=419#a419</guid>
<pubDate>Sun, 08 May 2016 08:12:32 +0000</pubDate>
</item>
<item>
<title>已回答：如何检测三维图中&quot;脊&quot;的出现位置？</title>
<link>https://mmaqa.com/qa/162/?show=167#a167</link>
<description>

&lt;p&gt;产生你说的离散点&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
p = Table[{t1, t2, h2[t1, t2]}, {t1, 0, 16, .1}, {t2, 0, 16, .1}];&lt;/pre&gt;



&lt;p&gt;图像处理&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
MaxDetect[p // Image]&lt;/pre&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.stack.imgur.com/EGoEH.png&quot;&gt;&lt;/p&gt;



&lt;p&gt;注意轴的方向，画图坐标和Graphics之间的区别&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.stack.imgur.com/ck4r1.png&quot;&gt;&lt;/p&gt;



&lt;hr&gt;


&lt;p&gt;不是很清楚你具体要什么&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
p = Table[h2[t1, t2], {t1, 0, 16, .1}, {t2, 0, 16, .1}];
pic = Colorize[p // Image, ColorFunction -&amp;gt; GrayLevel];&lt;/pre&gt;



&lt;p&gt;这种？&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
r1 = MorphologicalBinarize[pic, {0.08, 0.15}]&lt;/pre&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.stack.imgur.com/9jKEQ.png&quot;&gt;&lt;/p&gt;



&lt;p&gt;还是这种？&lt;/p&gt;



&lt;pre class=&quot;prettyprint lang-mma&quot;&gt;
r2 = Thinning@r1&lt;/pre&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.stack.imgur.com/R1ytr.png&quot;&gt;&lt;/p&gt;</description>
<category>图像处理</category>
<guid isPermaLink="true">https://mmaqa.com/qa/162/?show=167#a167</guid>
<pubDate>Mon, 18 Apr 2016 08:21:00 +0000</pubDate>
</item>
</channel>
</rss>